2013-09-16 12 views
6

To wydaje się być proste pytanie, ale nie mogę znaleźć dobrej odpowiedzi. Czy istnieje sposób umieszczenia warunku w pętli foreach? Chciałbym coś takiego:Łączenie foreach i podczas gdy w PHP

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

Oczywiście może po prostu położyć jeśli warunek wewnątrz pętli foreach następująco:

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

Jedyną rzeczą jest to, że chciałbym zatrzymać iterowanie po tablicy, gdy warunek if stanie się fałszywy, w celu poprawy wydajności. Nie ma potrzeby przechodzenia przez pozostałą część pętli foreach, aby stwierdzić, że $ warunek jest fałszywy, gdy stanie się fałszywy.

Wszelkie sugestie? Czy mam coś pomylonego?

+3

Zerwanie oświadczenia. –

+0

Faktycznie naprawdę mam nadzieję, że php może mieć to foreach i podczas funkcji, to jest bardzo czyste i uporządkowane – zhihong

Odpowiedz

17

Nie, ale można break pętlę, gdy warunek jest spełniony:

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

można łatwo używać słowa kluczowego break zamknąć pętlę foreach w momencie, który chcesz. to jest najprostszy sposób robienia tego, co mogę w tej chwili myśleć.

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

może możesz użyć przerwy; zdanie

foreach ($ array jako $ value) { if ($ warunek == true) {// zrobić jakiś kod} inny {break; }}

2

Można również wypróbować zwykłą pętlę for, która ma wbudowany warunek. Jedyną rzeczą jest to, że będziesz musiał uzyskać dostęp do elementu tablicy za pomocą jej indeksu.

<?php 
//Basic example of for loop 
$fruits = array('apples', 'figs', 'bananas'); 
for($i = 0; $i < count($fruits); $i++){ 
    $fruit = $fruits[$i]; 
    echo $fruit . "\n"; 
} 

Jest to nieco bardziej skomplikowany przykład, który przestaje wykonywać, gdy tylko znajdzie 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"; 
} 

Mam nadzieję, że to pomaga.

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