【问题标题】:In Php 'foreach' skip the current iteration block and also rest of the loop [duplicate]在 Php 'foreach' 中跳过当前迭代块以及循环的其余部分 [重复]
【发布时间】:2018-09-22 04:06:05
【问题描述】:

Php 'Continue' 将告诉它跳过当前的迭代块,但继续循环的其余部分。适用于所有场景(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);
    }
}

我的代码有什么问题。

【问题讨论】:

  • 分享一些数据来测试?你也想打破外循环吗?
  • break 只破坏当前循环而不是外部循环。打破外部尝试break 2
  • 你确定匹配值吗??试试 var_dump($column_names)
  • 请具体描述您的问题,$column_name 来自哪里?,它包含哪种类型的数据?

标签: php


【解决方案1】:

试试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

break 结束当前 for、foreach、while、do-while 或 switch 结构的执行。

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

干杯

【讨论】:

    【解决方案2】:

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

    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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 2013-01-29
      • 1970-01-01
      • 2023-03-15
      • 2013-03-30
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多