2012-08-15 27 views
7

Bir süre döngüsünde birden çok koşul yazmak mümkün mü? Değilse, alternatif nedir? Denedim ve while döngüsü için koşulları oluşturan kod satırı ile ilgili bir hata ile döndü. İşte demek istediğim bir örnek. $s < 5 etrafındaDöngü ve Çoklu Koşullar

while (($result_row = mysql_fetch_assoc($query)) && ($s < 5)) 

parantezler burada gerekli değildir, ama ben: mümkündür, ancak = alt vardır çünkü sizin beyanı doğru yorumlanabilmesi sağlamak için parantez gerek precedence&& daha

$s = 1; 

while ($result_row = mysql_fetch_assoc($query) && $s < 5) 
{ 
echo $result_row['id']; 
$s++; 
} 
+1

Elbette mümkündür. Onu denedin mi? Tüm 'while' koşulu, ancak sahip olabileceği birçok bileşen TRUE veya FALSE olarak değerlendirilmelidir. Tek şart bu. Böyle bir bileşik deyiminde ödev yaparken dikkatli olun, ancak ... '$ result_row', operatörün önceliği nedeniyle beklediğiniz şeyi alamayabilir. –

+1

Mantığınız doğru. Hata tam olarak ne diyor? –

+1

Kesinlikle diğer tüm kontrol yapıları gibi mümkündür. Sadece doğru ya da yanlış değerlendirmek zorundadır. – j08691

cevap

22

ve açıklık için onları dahil.

Ancak, sorgunuzu yalnızca LIMIT 5 ekleyerek yalnızca 5 satırı döndürecek şekilde değiştirmek daha kolay olurdu.

SELECT ... 
FROM yourtable 
ORDER BY ... 
LIMIT 5 
+1

Daha da iyisi: [mysqli_stmt_num_rows()] (http://www.php.net/manual/en/mysqli-stmt.num-rows.php) – ghoti

+0

Bağlantılı öncelik, buradaki ikinci iç parantez çiftini gerektirmez. Onları buraya koymayı önermek biraz yanıltıcı gibi görünüyor. Ancak onlar incitmezler. – hakre

0

ben bu yanlış bir şey görmüyorum ederken. diğer yol ise böyle bir şey yapmaktır.

$s = 1; 
while ($result_row = mysql_fetch_assoc($query)) 
{ 
    if($s < 5) { 
     //enter the condition 
    } 
    $s++; 
} 
0

$result_row değeri muhtemelen doğru-imsi ve $smysql_fetch_assoc($query) döner şey bir sözlük olarak artık çalışıyor $result_row okumaya çalışıyorum Yani az 5. olup olmadığı Boole durumuna kuruluyor.

Olayların çözümlenir olsun tam olarak nasıl belirtmek için parantez kullanabilirsiniz:

Bu şekilde, $result_row sen ve döngü mantıksal değerini alana kadar devam eder, istediğini mysql_fetch_assoc($query), ayarlı alır
while (($result_row = mysql_fetch_assoc($query)) && ($s < 5)) 

Bu ödevin gerçek bir şey döndürdüğü, s'un da 5'ten az olduğu