2012-07-20 42 views
5

Tại sao vòng lặp này hoạt động với từng điều kiện, nhưng điều kiện đầu tiên không quan trọng?Hai điều kiện trong vòng lặp

for ($j = 0; $j < 5 or $j < $synCount; $j++) 

tôi chỉ muốn vòng lặp chạy năm lần

hoặc

nếu synCount nhỏ hơn này.

Trả lời

12

Bạn có thể có nghĩa là "$j unde r 5 $j dưới $sysCount", hoặc:

$j < min(5, $sysCount) 
+0

Không biết về chức năng này. Thanh lịch hơn so với giải pháp của tôi, đẹp nhất! – hellsgate

+0

Đáng yêu! Cảm ơn rất nhiều. – flux

0

Bạn có thể youse tuyên bố break rời khỏi vòng lặp for:

for ($j = 0; $j < 5 ; $j++) 
{ 
    if($j >= $synCount) 
     break; 
    //treatment 
} 

Hoặc tính toán giới hạn của bạn trước khi vòng lặp:

$ max = $synCount < 5 ? $synCount : 5; 
for ($j = 0; $j < $synCount ; $j++) 
{ 
    //treatment 
} 

Một giải pháp khác, nhanh nhất: sử dụng min():

for ($j = 0; $j < min(5, $synCount) ; $j++) 
{ 
    //treatment 
} 
0

Hãy thử nó như thế này:

$loopcount = ($syncount < 5) ? $syncount : 5; 
for ($j = 0; $j < $loopcount; ++$j) { 
} 

Dòng đầu tiên xác định liệu $syncount là ít hơn 5 hay không và sau đó gán một giá trị đến $loopcount dựa trên đó. Sau đó vòng lặp chạy số lần yêu cầu.

0
for ($j = 0; $j < ($syncCount <= 5 ? $syncCount : 5); $j++) 

hoặc hơi tối ưu hóa (nhưng tôi đoán với 5 hoặc ít lặp này hoàn toàn không quan trọng)

for ($j = 0, $limit = min($syncCount, 5); $j < $limit; $j++) 

anothe giải pháp đẹp

foreach (range(0, min($syncCount, 5)) as $j) 

Sidenote

$syncCount <= 5 ? $syncCount : 5 == min($syncCount, 5) 
2

rất đơn giản

$j < min(5, $sysCount) 
0
$productsprice=ProductPrice::model()->findAllByAttributes(array ('product_id'=>$products_data->product_id)); 
foreach($productsprice AS $productsprice): 
    for($quantity = 0; $quantity <= 10; $quantity++) 
    { 
     echo '<li >'.array(value=>'ProductPrice::model()->getquantity($data->quantity)').'</li>' ; 
    } 
endforeach; 
+1

Vui lòng thêm một số chi tiết về câu trả lời của bạn. – emmanuel

Các vấn đề liên quan