在 PHP 中组合 foreach 和 while


Combining foreach and while in PHP

这似乎应该是一个简单的问题,但我找不到一个好的答案。 有没有办法在 foreach 循环上放置条件? 我想要这样的东西:

foreach ($array as $value WHILE $condition == true)
{ //do some code }

当然,我可以在 foreach 循环中放置一个 if 条件,如下所示:

foreach ($array as $value)
{
    if($condition == true)
    {//do some code}
}

唯一的问题是,一旦 if 条件变为假,我想停止迭代数组,以提高性能。无需运行 foreach 循环的其余部分来确定 $condition 一旦变为 false,它就是假的。

有什么建议吗?我是不是看错了什么明显的东西?

否,但您可以在满足条件时break循环:

foreach ($array as $value){
  if($condition != true)
    break;
}
foreach ($array as $value) {
   if($condition) {
     //do some code
   }
   else {
     break; 
   }
}

您可以轻松地使用 break 关键字在您希望的确切时刻退出 foreach 循环。 这是我目前能想到的最简单的方法。

foreach ($array as $value)
{
    if($condition == true)
    {
         //do some code
         break; 
    }
}

你也可以尝试一个常规的 for 循环,它有一个内置的条件。唯一的问题是,您必须使用数组的索引访问数组的元素。

<?php
//Basic example of for loop
$fruits = array('apples', 'figs', 'bananas');
for( $i = 0; $i < count($fruits); $i++ ){
    $fruit = $fruits[$i];
    echo $fruit . "'n";
}

这是一个稍微复杂一些的例子,一旦找到无花果就会停止执行。

<?php
//Added condition to for loop
$fruits = array('apple', 'fig', 'banana');
$continue = true;
for( $i = 0; $i < count($fruits) && $continue == true; $i++ ){
    $fruit = $fruits[$i];
    if( $fruit == 'fig' ){
        $continue = false;
    }
    echo $fruit . "'n";
}

我希望这有所帮助。

也许你可以使用中断;句子

foreach ($array as $value) { if($condition == true) {//做一些代码} 还 { 休息; } }

使用 foreach 的替代 whitout,但仅限于 while。像这样,当条件返回 false 时,循环将结束。

$i = 0;
while (condition(array[$i]) === true) {
    $continue = true;
    echo array[i];
    $i++;
}