2013-09-16 34 views
6

Điều này có vẻ như nó phải là một câu hỏi đơn giản, nhưng tôi không thể tìm thấy câu trả lời hay. Có cách nào để đặt một điều kiện trên một vòng lặp foreach? Tôi muốn một cái gì đó như thế này:Kết hợp foreach và trong khi ở PHP

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

Tất nhiên tôi chỉ có thể đặt dấu nếu tình trạng bên trong vòng lặp foreach như sau:

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

Điều duy nhất là tôi muốn dừng lại lặp qua mảng sau khi điều kiện if trở thành false, với mục đích cải thiện hiệu suất. Không cần phải chạy qua phần còn lại của vòng lặp foreach để xác định rằng $ condition là false khi nó trở thành false.

Mọi đề xuất? Tôi có hiểu sai điều gì đó hiển nhiên không?

+3

tuyên bố ngắt. –

+0

Thực sự hy vọng php có thể có điều này foreach và trong khi chức năng, đó là nhiều sạch sẽ và ngăn nắp – zhihong

Trả lời

17

Không, nhưng bạn có thể break vòng lặp khi điều kiện của bạn được đáp ứng:

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

Bạn có thể dễ dàng sử dụng các từ khóa break để thoát khỏi một vòng lặp foreach tại thời điểm chính xác mà bạn muốn. đây là cách đơn giản nhất để làm điều này tôi có thể nghĩ đến vào lúc này.

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

có thể bạn có thể sử dụng ngắt; câu

foreach ($ mảng như $ value) { if ($ trạng == true) {// làm một số code} khác {break; }}

2

Bạn cũng có thể thử vòng lặp thông thường, có điều kiện tích hợp sẵn. Điều duy nhất là bạn sẽ phải truy cập vào phần tử của mảng bằng cách sử dụng chỉ mục của nó.

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

Ví dụ này hơi phức tạp hơn, dừng hoạt động ngay khi tìm thấy hình.

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

Tôi hy vọng điều đó sẽ hữu ích.

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