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


In Php 'foreach' skip the current iteration block and also rest of the loop

本问题已经有最佳答案,请猛点这里访问。

php"continue"将告诉它跳过当前迭代块,但继续循环的其余部分。在所有场景中都可以工作(for,while,etc.),但我想跳过循环的其余部分,我用break尝试过,但没有工作。

1
2
3
4
5
6
7
8
9
10
11
12
13
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);
    }
}

我的代码有什么问题。


试试break 2;

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

1
2
3
4
5
6
7
8
9
10
11
12
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

break ends execution of the current for, foreach, while, do-while or switch structure.

break accepts an optional numeric argument which tells it how many nested enclosing structures are to be broken out of. The default value is 1, only the immediate enclosing structure is broken out of.

干杯


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;

您可以在这里检查如何使用PHP中断外部循环?