在PHP中结合foreach和while使用

10

这似乎是一个简单的问题,但我找不到一个好的答案。在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后停止遍历数组。 一旦 $condition 变为 false,就没有必要通过foreach循环来确定它是否为false。

有什么建议吗?我是否遗漏了什么显而易见的东西?


1
实际上我真的希望PHP能有这种foreach和while函数,这样会更加简洁整洁。 - zhihong
6个回答

24

不可以,但当满足条件时,您可以使用break语句来中断循环:

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

如果$condition是布尔值,我更喜欢使用if(!$condition)而不是if($condition != true);否则(包含null等情况),我更喜欢使用if($condition !== true) - safineh

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

2

您可以轻松使用break关键字在foreach循环中退出,这是我目前能想到的最简单的方法。

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

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

我希望您能得到帮助。

1
也许你可以使用 "break;" 语句。
遍历数组中的每个值: foreach ($array as $value) { 如果满足条件为真: if($condition == true) {//执行一些代码} 否则: else { 使用 break; 跳出循环; } }

0

使用while而不是foreach的替代方案。这样,当条件返回false时,循环将结束。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接