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有时极大降低效率.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值