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