9

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

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

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

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

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

有什么建议么?我错过了什么明显的东西吗?

4

6 回答 6

23

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

foreach ($array as $value){
  if($condition != true)
    break;
}
于 2013-09-16T17:33:34.117 回答
2

You can easily use the break keyword to exit a foreach loop at the exact moment you wish. this is the simplest way of doing this i can think of at the moment.

foreach ($array as $value)
{
    if($condition == true)
    {
         //do some code
         break; 
    }
}
于 2013-09-16T17:35:12.093 回答
2

您还可以尝试使用内置条件的常规 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";
}

这是一个稍微复杂一点的例子,一旦找到 fig 就停止执行。

<?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";
}

我希望这会有所帮助。

于 2013-09-16T17:41:47.243 回答
2
foreach ($array as $value) {
   if($condition) {
     //do some code
   }
   else {
     break; 
   }
}
于 2013-09-16T17:46:03.370 回答
1

maybe you can use the break; sentence

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

于 2013-09-16T17:35:55.187 回答
0

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

$i = 0;
while (condition(array[$i]) === true) {
    $continue = true;
    echo array[i];
    $i++;
}
于 2018-08-28T10:29:35.497 回答