在Php'foreach'中跳过当前的迭代块以及循环的其余部分

时间:2018-04-12 06:10:40

标签: php

Php'继续'将告诉它跳过当前的迭代块,但继续循环的其余部分。适用于所有场景(for,while等)。但我想跳过循环的其余部分。我尝试使用break;但不能正常工作。

if ($column_names > 0) {
    foreach ($column_names as $heading) {
        foreach ($heading as $column_heading)
            if($column_heading == "trip_id"){
                break;
            }
            if($column_heading == "number_of_pessengers"){
                $column_heading = "No. pessengers";
            }
            $cellWidth = $pdf->GetStringWidth($column_heading);
            $pdf->Cell($cellWidth + 2, 10, $column_heading, 1);
    }
}

我的代码有什么问题。

2 个答案:

答案 0 :(得分:3)

尝试break 2;

如果要退出嵌套循环,则必须使用“参数”进行中断。

foreach ($column_names as $heading) {
    foreach ($heading as $column_heading)
        if($column_heading == "trip_id"){
            break 2; //break out of both loops.
        }
        if($column_heading == "number_of_pessengers"){
            $column_heading = "No. pessengers";
        }
        $cellWidth = $pdf->GetStringWidth($column_heading);
        $pdf->Cell($cellWidth + 2, 10, $column_heading, 1);
     }
}

谁知道你可以使用break添加号码,continue也可以使用相同的方式。

http://php.net/manual/en/control-structures.break.php

  

中断结束当前for,foreach,while,do-while或switch结构的执行。

     

break 接受一个可选的数字参数,该参数告诉它有多少嵌套的封闭结构被打破。默认值为1,仅打破了直接封闭结构。

干杯

答案 1 :(得分:-1)

如果你想从两个循环中存在,那么你必须保留一个标志变量

if ($column_names > 0) {
foreach ($column_names as $heading) {
  $flag = 0;
    foreach ($heading as $column_heading){
        if($column_heading == "trip_id"){
            $flag = 1;
            break;
        }
        if($column_heading == "number_of_pessengers"){
            $column_heading = "No. pessengers";
        }
        $cellWidth = $pdf->GetStringWidth($column_heading);
        $pdf->Cell($cellWidth + 2, 10, $column_heading, 1);
     }
   if($flag == 1) break;
}

或者您可以使用break 2;

你可以在这里查看How can I break an outer loop with PHP?