php中break 2 和 continue 2 的区别是什么呢?

continue和break的区别我是知道的。
那continue num 和 break num的区别是什么呢?

阅读 24.9k
3 个回答

break是结束整个循环体,continue是结束单次循环
break num是结束外层第num层整个循环体,continue num 是结束外层第num层单次循环

<?php
    
    foreach($arr1 as $value1)
    {
        foreach($value1 as $value2)
        {
            if($value2 == 0)
            {
               continue; //继续下次循环,在里层的foreach里面,默认为1
               continue 2;//继续下次循环,在外层的foreach里面 
               break; 则同理
            }
        }
    
    }

break是跳出循环,而continue是开始执行下一次循环。那么对于加了数字的break和continue是用来标识层层循环嵌套。当遇上一个循环中嵌套多个循环,这时候的未加数字的break和continue,代表的都是包含break(等于break 1)和continue(等于continue 1)最里面的一层循环的循环结构要么开始最里面一层循环的下一层循环要么终止最里面的一层循环,而continue 2和 break 2则是代表包含这个continue 2和 break 2得最里面倒数第二层循环,以此类推:

<?php
$data = array(

        array(
            'seller_id'  => '商家1',
            'product_id' => '001'
         ),
         array(
            'seller_id'  => '商家1',
            'product_id' => '002'
         ),
         array(
            'seller_id'  => '商家1',
            'product_id' => '003'
         ),
         array(
            'seller_id'  => '商家2',
            'product_id' => '001'
         ),
         array(
            'seller_id'  => '商家3',
            'product_id' => '001'
         ),
         array(
            'seller_id'  => '商家3',
            'product_id' => '002'
         ),
         array(
            'seller_id'  => '商家3',
            'product_id' => '003'
         ),
);

$result = array();
foreach($data as $key => $value) {

foreach($value as $k => $val) {
    if($val == '商家1') {
        continue 2;
    }
    
    var_dump($val);die;// continue 2 执行最外层的下一层循环,所以下面不会有输出,此处输出“商家2”
}
 var_dump($value);die;

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏