在PHP中结合foreach和while

时间:2013-09-16 17:31:58

标签: php foreach while-loop

这似乎应该是一个简单的问题,但我找不到一个好的答案。有没有办法在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在变为false时为false。

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

6 个答案:

答案 0 :(得分:20)

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

foreach ($array as $value){
  if($condition != true)
    break;
}

答案 1 :(得分:2)

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

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

答案 2 :(得分: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";
}

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

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

我希望有所帮助。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

也许你可以使用休息;句子

  

foreach($ array as $ value){       if($ condition == true)       {//做一些代码}       其他       {break; }}

答案 5 :(得分:0)

使用foreach的替代方法,但仅在一段时间内使用。这样,当条件返回false时,循环将结束。

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