PHP-分支语句、while循环、for循环

发布于:2025-08-05 ⋅ 阅读:(14) ⋅ 点赞:(0)

分支语句

无论在何种编程语言中,流程控制都是很重要的内容。由于 PHP 的大部分语法都继承了C语言的特点,
因此在流程控制方面,PHP 有着和C语言类似的流程控制。
if else 语句是流程控制中根据条件判断执行的一种。该语句执行时先对条件进行判断,然后根据判断结
果做出相应的操作。它又可以细分为三种,分别是 if 语句、if…else 语句、if…else if…else 语句。

  1. if 语句

if 语句是流程控制中最简单的一种。只判断某个条件是否为真,如果为真就执行特定的语句块。语法格
式如下

if (判断条件) {
语句块;
 }

如果需要执行的语句块包含一条以上的语句,则要使用{ }把 它们括起来,表示一个整体;如果要执行的
语句只有一条,就可以省略大括号标记。像下面这样

if (判断条件)
一条语句;

在这里插入图片描述

<?php
//定义一个数字,使用 if 语句判断这个数字是不是偶数,
 $num = 34;
 if ($num % 2 == 0) {
 echo '$num ='.$num.', 是偶数!';
 }
 ?>

if…else 语句
if 语句只能对判断结果为真的情况执行操作,这在很多情况下是不够的,于是就有了 if…else 这种形式的
语句。与 if 判断不同,if…else 语句不仅对判断结果为真的情况执行操作,对非真的情况也可以执行相应
的操作。
else 语句延伸了 if 语句,可以在 if 语句中表达式的值为 FALSE 时执行相应的语句。另外需要注意的
是,else 语句是 if 语句的从句,必须和 if 语句一起使用,不能单独存在。

if (判断条件) {
语句块 1;
 } else {
语句块 2;
 }

在上面的格式中,如果“判断条件”为真,则执行“语句块 1”;否则执行“语句块 2”。“语句块 1”和“语句块
2”都可以包含多条语句。与 if 语句相同的是,如果“语句块 1”和“语句块 2”中都只包含一条语句的话,可
以省略大括号{ }.
在这里插入图片描述

 <?php
    $num = rand(1,31);  //生成一个 1~31 之间的随机数
    if ($num % 2 == 0) {
        echo '$num ='.$num.', 是偶数!';
    } else {
        echo '$num ='.$num.', 是奇数!';
    }
 ?>

if…else if…else 语句
else if 语句和 else 语句一样,它延伸了 if 语句,else if 语句会根据不同的表达式来确定执行哪个语句

 if (判断条件 1) {
    语句块 1;
 } else if (判断条件 2) {
    语句块 2;
 } else if (判断条件 3) {
    语句块 3;
 }
 ......
 	else if (判断条件 n) {
语句块 n;
 }
 	else{
语句块 n+1;
 }

在上面的 else if 的语法中,如果第一个“判断条件 1”为 TRUE,则执行“语句块 1”语句;如果第二个“判断
条件 2”为 TRUE,则执行“语句块 2”语句;以此类推。如果表达式的条件都不为 TRUE,则执行 else 子句
中的“语句块 n+1”语句,当然最后的 else 语句也可以省略。
在 else if 语句中同时只能有一个表达式为 TRUE,即在 else if 语句中只能有一个语句块被执行。如果有
多个表达式的值为 TRUE 时,只会执行第一个表达式所对应的语句块。
在这里插入图片描述

<?php
 $score = 89; 
if ($score > 90) {
 echo '成绩的级别为:优!';
 } else if ($score > 70) {
 echo '成绩的级别为:良!';
 } else if ($score > 60) {
 echo '成绩的级别为:中!';
 } else {
 echo '成绩的级别为:差!';
 }
 ?>

switch
switch 语句和 if…else if…else 语句相似,也是一种分支结构,与 if…else if…else 语句相比 switch 语句
更加简洁明了。
switch 语句由一个表达式和多个 case 标签组成,case 标签后紧跟一个代码块,case 标签作为这个代码
块的标识。

switch(表达式){
	case1:
语句块 1;
	break;
	case2:
语句块 2;
 break;
 ... ...
 casen:
语句块 n;
 break;
 default:
语句块 n+1;
 }

switch 语句根据表达式的值,依次与 case 中的值进行比较,如果不相等,继续查找下一个 case;如果
相等,就会执行对应的语句,直到 switch 语句结束或遇到 break 为止。
一般来说,switch 语句最终都有一个默认值 default,如果在前面的 case 中没有找到相符的条件,则执
行默认语句,和 else 语句类似。
在这里插入图片描述
和 if 语句不同的是,switch 语句后面表达式的数据类型只能是整型或字符串,不能是 bool 型。通
常这个表达式是一个变量名称,虽然 PHP 是弱类型语言,在 switch 后面表达式的变量可以是任意
类型数据,但为了保证匹配执行的准确性,最好只使用整型或字符串中的一种类型。
和 if 语句不同的是,switch 语句后面的花括号是必须有的。
case 语句的个数没有规定,可以无限增加。但 case 标签和 case 标签后面的值之间应该有一个空
格,值后面必须有一个冒号,这是语法的一部分。
switch 匹配完成以后,将依次逐条执行匹配的分支模块中的语句,直到 switch 结构结束或者遇到
了 break 语句才停止执行。所以,如果一个分支语句的后面没有写上 break 语句,程序将会继续
执行下一个分支语句的内容。
与 if 语句中的 else 类似,switch 语句中 default 标签直接在后面加上一个冒号,看似没有条件,
其实是有条件的,条件就是“表达式”的值不能与前面任何一个 case 标签后的值相等,这时才执行
default 分支中的语句。default 标签和 if 中的 else 子句一样,它不是 switch 语句中必需的,可以
省略

<?php
 $week = date('D');
##  
循环语句
循环语句可以在满足条件的情况下反复执行某一个操作。在 PHP 中提供了 4 个循环控制语句,分别是 
whiledo whileforforeach(主要用于遍历数组)循环语句。
 1. while 循环 
while 循环的作用是反复执行某一项操作,是循环语句中最简单的一个。该语句的特点是:先判断表达
式,当表达式结果为真时执行相应的语句。
while 循环的语法格式如下:
    switch($week){
        case 'Mon':
            echo '星期一';
            break;
        case 'Tue':
            echo '星期二';
            break;
        case 'Wed':
            echo '星期三';
            break;
        case 'Thu':
            echo '星期四';
            break;
        case 'Fri':
            echo '星期五';
            break;
        case 'Sat':
            echo '星期六';
            break;
        case 'Sun':
            echo '星期日';
            break;
    }
 ?>
  1. while循环
    while 循环的作用是反复执行某一项操作,是循环语句中最简单的一个。该语句的特点是:先判断表达
    式,当表达式结果为真时执行相应的语句。
 while (表达式) {
语句块;
 }

当表达式的值为真时,将执行循环体内的 PHP 语句块,执行结束后,再返回到表达式继续进行判断,判
断为真时继续执行语句块中的代码,直到表达式的值为假时才跳出循环。
在这里插入图片描述
while 循环中“表达式”的计算结果一定要是布尔型的 TRUE 或 FALSE,如果是其他类型的值也会自动转换
为布尔类型的值。通常这个表达式是使用比较运算符或者逻辑运算符计算后的值。“语句块”是一条语句
或一个复合语句(代码块)。当 while 循环语句中只有一条语句时可以将包裹代码块的大括号{ }省略。
如果是多条语句的代码块,则一定要使用大括号{ }包裹起来。

<?php
 $num = 1;
 while($num <= 10) {
 		echo $num.($num == 10 ? '' : ', ');
		$num++;
 }
 ?>

do while 循环
do while 和 while 循环非常相似,区别在于 do while 循环的表达式是在每次循环结束时检查而不是在
开始时,而且不论表达式的结果如何 do while 循环语句都会执行一次,因为表达式的值是每次循环结束
后才检查的。而在 while 循环中就不同了,表达式的值在循环开始时检查,如果一开始就为 FALSE,则
整个循环立即终止。

do {
语句块;
 } while (表达式);

其中 while 语句中“表达式”的计算结果也一定要是布尔型的 TRUE 或 FALSE。“语句块”也可以是一条语句
或一个复合语句(代码块)。当 do while 语句语句块中只有一条语句时,也可以省略大括号{ }。
注意:使用 do while 时最后一定要有一个分号;,分号也是 do while 循环语法的一部分。
do while 循环语句的执行流程是:先执行一次循环体中的语句块,然后判断表达式的值,当表达式的值
为 TRUE 时,返回重新执行循环体中的语句块,如此反复,直到表达式的值等于 FALSE 为止,此时循环
结束。其特点是先执行循环体,然后判断循环条件是否成立。
在这里插入图片描述

<?php
 $sum = 0;
 $i = 1;
 do {
 		$sum += $i;
 		$i++;
 } while ($i <= 50);
 		echo '1 + 2 + 3 +...+ 49 + 50 = '. $sum;
 ?>

for循环
for 循环是 PHP 中最复杂的循环结构。for 循环语句能够按照已知的循环次数进行循环操作,适用于明
确知道执行次数的情况。
for 循环的格式和前面介绍的while 和 do while 两种循环语句不一样,for 循环将控制循环次数的变量预
先定义在 for 语句中。虽然 for 循环是 PHP 中最复杂的循环结构,但使用起来非常方便。

for (初始化表达式; 条件判断; 变量更新) {
循环体;
 }

参数说明如下:
·初始化表达式:通常用于声明一个计数器的初始值,即循环开始的值;
·条件判断:用于控制是否执行循环体中的代码,如果条件为 FALSE ,则立即退出循环;
·变量更新:循环每执行一次,马上修改计数器的值;
·循环体:条件判断为真时,需要执行的若干代码。
在这里插入图片描述
通过 for 循环来计算 100 的阶乘

<?php
 $sum = 1;
 for ($i = 1; $i <= 100; $i++) {
 		$sum *= $i;
 }
 	echo '100! = '.$sum;
 ?>

for 循环语句也可以像 while 语句一样嵌套使用,即在 for 循环语句中包含另外的一个或多个 for 循环语
句。通过对 for 循环语句进行嵌套,可以完成一些复杂的编程。比如打印九九乘法表

<?php
 for ($i = 1; $i <= 9; $i++) {
 			for ($j = 1; $j <= $i; $j++) {
					echo $j.' * '.$i.' = '.$i*$j.'&nbsp;&nbsp;';
			}
			echo '<br>';
		}
 ?>

网站公告

今日签到

点亮在社区的每一天
去签到