2013-09-16 3 views
6

Кажется, что это должен быть простой вопрос, но я не могу найти хороший ответ. Есть ли способ поставить условие на цикл foreach? Я хотел бы что-то вроде этого:Сочетание foreach и while в PHP

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

Конечно, я мог бы просто Погружаю если условие внутри цикла Еогеаспа следующим образом:

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

Единственное, что я хотел бы остановиться итерации по массиву после того, как условие if станет ложным, с целью повышения производительности. Нет необходимости пробегать остаток цикла foreach, чтобы определить, что условие $ false, когда оно становится ложным.

Любые предложения? Есть ли что-то очевидное?

+3

заявление о прекращении производства. –

+0

На самом деле действительно надеюсь, что php может иметь этот foreach и в то время как функция, которая является очень чистой и аккуратной – zhihong

ответ

17

Нет, но вы можете break петли, когда ваше условие:

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

Вы можете легко использовать ключевое слово перерыва для выхода из цикла Еогеаспа в тот момент, который вы хотите. это самый простой способ сделать это, о котором я могу думать в данный момент.

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

Возможно, вы можете использовать перерыв; Приговор

Еогеасп ($ массив в $ значение) { если ($ условие == верно) {// сделать некоторый код} еще {перерыва; }}

2

Вы также можете попробовать обычный цикл, в котором есть условие. Единственное, что вам нужно получить доступ к элементу массива, используя его индекс.

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

Я надеюсь, что это поможет.

2
foreach ($array as $value) { 
    if($condition) { 
    //do some code 
    } 
    else { 
    break; 
    } 
} 
Смежные вопросы