【问题标题】:Stop PHP for loop after 5 valid results在 5 个有效结果后停止 PHP for 循环
【发布时间】:2026-01-04 16:40:01
【问题描述】:

我有一个 PHP for 循环,它引入了一个 11 的数组。目前,循环打印出所有 11。但是在这个 for 循环的中间,我有一个 if 语句来检查另一个值,所以最后,它可能循环打印出小于 11。

$countarray = count($the_big_array);
for($i=1; $i <= $countarray; $i++) {
$earow = $the_big_array[$i];

......
$something = 200; //this number than vary

   if ($something < 3600){

echo $earow[0];
echo $earow[3];

    }
}

我的问题是:如何确保循环查看完整的数组集,而只打印出 5 个有效结果?

【问题讨论】:

  • 你如何定义什么是有效结果?
  • 统计有效结果,如果是5,使用'break;'
  • 如果只需要打印5,为什么还需要查看整个数组?假设前五个符合您的条件,那么为什么还要遍历其余的?

标签: php arrays for-loop


【解决方案1】:

您需要维护一个有效值的计数器,并使用它来中断您的循环。例如:

$num_valid = 0;
for($i=1; $i <= $countarray; $i++) {
    // do stuff
    if (/* value is valid */) {
        $num_valid++;
        if ($num_valid == 5) break;
    }
}

【讨论】:

    【解决方案2】:

    我正在使用 foreach 循环,因为您似乎正在以“foreach”方式使用循环。
    这里我只是检查计数器是否超过 5 并且没有回显,但我让循环继续进行。

    $counter = 0;
    foreach($the_big_array as $earow){
        ......
        $something = 200; //this number than vary
    
        if ($something < 3600 && $counter < 5){
            echo $earow[0];
            echo $earow[3];
            counter++;
        }
    }
    

    如果您需要在每次迭代中输入另一个选项,则另一个选项是通过回显放置另一个。

    $counter = 0;
    foreach($the_big_array as $earow){
        ......
        $something = 200; //this number than vary
    
        if($something < 3600){
            if($counter < 5){
                echo $earow[0];
                echo $earow[3];
                counter++;
            }
            // Now you can do stuff here
            // on every item without echo
        }
    }
    

    【讨论】:

      【解决方案3】:

      你可以使用类似的东西:

      $counter = 0;
      $countarray = count ( $the_big_array);
      for ( $i = 1; $i <= $countarray; $i++)
      {
        $earow = $the_big_array[$i];
      
        ......
        $something = 200; //this number than vary
      
        if ( $something < 3600)
        {
          echo $earow[0];
          echo $earow[3];
          counter++;
        }
        if ( $counter == 5)
        {
          break;
        }
      }
      

      【讨论】:

        最近更新 更多