这似乎应该是一个简单的问题,但我找不到一个好的答案。有没有办法在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。
有什么建议吗?我错了一些明显的东西吗?
答案 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++;
}