PHP中的循环

while语句

while循环语句和if语句的不同,就在于if语句只有在条件为true的情况下才执行后续的代码块一次,而while循环语句只要条件为true,就会不断的重复执行代码块

while ( condition ) expression

实例:显示数字1-5

$num = 1;
while ($num <= 5 ){
   echo $num . "<br />";
   $num++;
}
// 在每次循环的开始,都将对条件进行检测,如果条件为false,该语句将不会执行,而且循环就会结束。

do...while循环

do {
  要执行的代码;
} while (条件为真);

1、do-while 循环语句保证会执行一次
2、最适合循环语句至少被执行一次的情况
3、while后面有分号;

$i = 5;
do {
    $i++;
    echo "The number is $i <br/>";
}while ($i<5);

for循环

相比while,代码更加紧凑一些,更关注循环的次数。

for (initial expression1;condition; expression2){
    //Do something
}
  • initial expression1 (初始表达式1) 在第一次循环时自动计算
  • condition(条件表达式)将在每一次循环开始之前被检测;这个表达式确定是否继续循环。
  • expression2 (表达式2)在每次循环时进行计算。通常,可以在这里调整计数器的值。
  • Do something 在每一次循环中执行一次。通常,这个表达式是一个包含大量循环代码的代码块。

expression1,condition,expression2 这些表达式都可以为空,它们可以由for块内部的逻辑所取代。

// 示例一
for ($i = 0; $i < 10; $i++) {
    echo $i,'<br/>';
}

// 示例二
for ($i = 0; ; $i++) {
    if( $i > 10 ) break;
    echo $i,'<br/>';
}

// 示例三
$i = 0;
for (; ; ) {
    if( $i > 10 ) break;
    echo $i,'<br/>';
    $i++;
}

特殊的流程控制语句

1、break;

1、遇到break语句,将立即结束do...while、for、foreach、switch或while循环的执行。
2、break可以接收一个数字(如break2)来决定跳出几重语句。

$i = 0;
while (++$i) {
   switch ($i) {
           case 5:
               echo "我是 5<br />";
           break 1; /* 只退出 switch. */
           case 10:
               echo "我是10<br />";
           break 2; /* 退出 switch 和 while 循环 */
           default:
           break;
   }
}

2、goto(PHP5.3+)

goto操作符是PHP5.3+后新增功能,用来跳转到程序的另一位置;用法很简单:goto后面带上目标位置的标志,在目标位置上用目标名加冒号标记.

for ($count = 0; $count < 10; $count++) {
     $rand = mt_rand(0, 50);
     if( $rand < 10 )
         goto less;
     elseif( $count == 9 ) //在循环中至少有一次命中goto
         goto end;
     else
        echo '获取的随机数都比10大:'.$rand.'<hr/>';
}

echo '我只是想安静的做个美男子','<br/>';
less:
echo '循环了'.($count+1).'次,终于获得一个小于10的数:'.$rand,'<br/>';
end:
echo '游戏结束';

goto在开发中慎用。滥用会造成代码可读性差。

3、continue语句

1、只能在循环语句内部,功能是跳过该次循环,进入下次循环
2、也可以接收一个数字来决定跳出多重语句
3、循环结构中,不会执行continue以后的语句。

for ($i=0;$i<10;$i++){
    if( $i%2 == 0 ) continue;
    echo $i,'<br/>';
}

/* 后宫佳丽三千,可是皇上啊,独宠我一人 */
$i = 0;
while ($i++ < 5){
    echo '嫔妃1','<br/>';
    while (1){
        echo '--嫔妃2','<br/>';
        while (1){
            echo '----嫔妃3','<br/>';
            continue 3;
        }
        echo '嫔妃4一直得不到宠爱';
    }
    echo '嫔妃5一直也得不到宠爱';
}

4、exit语句

结束整个PHP脚本的执行,从而不会执行exit后剩下的代码。多用于排错!

//在生产环境下,php.ini中关闭了display_errors;所以error/notice/..信息不会直接出现在页面上,我们就可以借助exit来排错!
echo $a;
var_dump($a);
exit('-------');