PHP的continue 2


PHP是一种类C语言语法的脚本语言, 但它有一些和C语言甚至是常见编程语言不一致的地方, 也就是PHP不符合常理的地方. 比如continue指令就是一个鲜活的例子.

简单地把continue用在for循环中, 那么, PHP的continue和C语言的continue一样, 都是在直接跳到下一个循环, 忽略后面的代码的执行. 不过, 如果循环中包含了一个switch语句, 并且continue是放在switch里的, 那么意思就大不相同了!

请看下面的例子:
a.php

<?php 

for($i=0; $i<6; $i++)



    switch($i){ 

        case 3: continue; 

        default: break; 



    } 

    echo $i . "\n"; 

输出:0 1 2 3 4 5

 

t.c 

#include <stdio.h>

int main(int argc, char **argv)

   int i; 

   for(i=0; i<6; i++){ 

      switch(i){ 

         case 3: continue; 

         default: break;

      } 

      printf("%d\n", i); 

   } 

   return 0; 

}

输出:0 1 2 4 5

注意到了吗? PHP的打印结果里出现了数字”3″! 也就是说, continue并没有作用到for语句, 这显然和C语言以及其它的语言不一样. 再看PHP的手册, 对这种情况做了解释:

Note: Note that in PHP the switch statement is considered a looping structure for the purposes of continue.

Note: Note that unlike some other languages, the continue statement applies to switch and acts similar to break. If you have a switch inside a loop and wish to continue to the next iteration of the outer loop, use continue 2.

原来, 如果要达到C语言那样的效果, 必须使用”continue 2(继续二)”, PHP也太二了吧! 这个陷阱如果不留意, 很容易就陷进去了. 顺便说一句, 没有goto有时极大降低效率.


PHP 中,`continue` 语句用于跳过当前循环的剩余部分,并继续执行下一次循环。默认情况下,`continue` 只影响当前所在的最内层循环。然而,PHP 提供了对 `continue` 的扩展用法,允许指定跳过多层循环的层数,例如 `continue 1`、`continue 2` 等。 `continue 1` 的作用是明确地指定跳过当前所在的最外层循环的一次迭代,其行为与默认的 `continue` 相同。这种写法在嵌套循环中尤其有用,当需要明确指定跳出层级时[^1]。 ### 使用示例 以下是一个使用 `continue 1` 的示例代码: ```php <?php for ($i = 0; $i < 5; $i++) { for ($j = 0; $j < 5; $j++) { if ($j == 2) { continue 1; // 跳过当前内层循环的本次迭代 } echo "i=$i, j=$j\n"; } } ?> ``` 在上述代码中,当 `$j == 2` 时,`continue 1` 会跳过内层循环的本次迭代,直接进入下一次 `$j` 的循环。它不会影响外层的 `$i` 循环[^1]。 ### 嵌套循环中的 `continue N` 示例 如果希望跳过多层循环,可以增加数字参数。例如,在三层嵌套循环中,可以使用 `continue 2` 或 `continue 3` 来控制跳出的层级。 ```php <?php for ($a = 0; $a < 2; $a++) { for ($b = 0; $b < 2; $b++) { for ($c = 0; $c < 2; $c++) { if ($c == 1) { continue 2; // 跳出两层循环,即终止 $b 循环和 $c 循环,继续执行 $a 的下一次迭代 } echo "a=$a, b=$b, c=$c\n"; } } } ?> ``` 在上述代码中,当 `$c == 1` 时,`continue 2` 会跳过当前 `$c` 循环以及外层的 `$b` 循环,直接进入 `$a` 的下一次迭代[^1]。 ### 总结 - `continue 1` 表示跳过当前最内层循环的一次迭代,等同于不带数字的 `continue`。 - `continue N`(N 为大于 1 的整数)用于在嵌套循环中跳过指定层级的循环。 - 该特性是 PHP 特有的语法,其他语言如 Python 不支持类似写法。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值