PHP: 控制循环执行次数, do…while与while , goto 跳转位置, if not repeat running

do-while

(PHP 4, PHP 5, PHP 7)

do-while 循环和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。和一般的 while 循环主要的区别是 do-while的循环语句保证会执行一次(表达式的真值在每次循环结束后检查),然而在一般的 while 循环中就不一定了(表达式真值在循环开始时检查,如果一开始就为 FALSE 则整个循环立即终止)。

do-while 循环只有一种语法:

<?php
$i = 0;
do {
   echo $i;
} while ($i > 0);
?>

以上循环将正好运行一次,因为经过第一次循环后,当检查表达式的真值时,其值为 FALSE$i 不大于 0)而导致循环终止。

do…while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样。

基本语法规定如下:

do {
   //代码块
} while (判断);

do…while与while的区别是,它们的值的检查时机不同。

do-while 不论while判断是否成立,先执行一次代码代码块循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)。
然而我们之前的while循环会检查布尔判断区域,成立则执行。不成立则不执行。

我们用代码去验证一下:

?php
$i = 0;
do {
   echo $i;
} while ($i > 0);
?>

上面代码中,$i 肯定不大于0,也执行了。

或者:

$product_title = get_product_title();

$loop       = 0;
$loop_limit = 3;

do
{
    if($product_title)
    {
        // do something
        $loop = $loop_limit;
    }
    else
    {
        $loop++;
        sleep(1);

        $product_title = get_product_title_again();
    }
}
while ($loop < $loop_limit);

当然,你还不能理解,实在想不到应用场景也没关系,可以完全跳过此块。

do…while用的情况比较少。我们有可能用在资源处理如:文件打开等地方。

 

goto

(PHP 5 >= 5.3.0, PHP 7)

goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break

Example #1 goto 示例

<?php
goto a;
echo 'Foo';
 
a:
echo 'Bar';
?>

以上例程会输出:Bar

 

Example #2 goto 跳出循环示例

<?php
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    if($j==17) goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';
?>

以上例程会输出:j hit 17

Example #3 以下写法无效

<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    loop:
  }
}
echo "$i = $i";
?>

以上例程会输出:Fatal error: ‘goto’ into loop or switch statement is disallowed in script on line 2

Note:

goto 操作符仅在 PHP 5.3及以上版本有效。

PHP: 控制循环执行次数, do...while与while , goto 跳转位置, if not repeat running
PHP: 控制循环执行次数, do…while与while , goto 跳转位置, if not repeat running

 

注:
goto 操作符可以用来跳转到程序中的另一位置。
该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。
PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。

 

本文:PHP: 控制循环执行次数, do…while与while , goto 跳转位置, if not repeat running