是否有可能在while循環中寫入多個條件?如果不是,還有什麼替代方案?我試過了,並且返回了一條與設置while循環條件的代碼行有關的錯誤。這是我的意思的一個例子。while循環和多個條件
$s = 1;
while ($result_row = mysql_fetch_assoc($query) && $s < 5)
{
echo $result_row['id'];
$s++;
}
是否有可能在while循環中寫入多個條件?如果不是,還有什麼替代方案?我試過了,並且返回了一條與設置while循環條件的代碼行有關的錯誤。這是我的意思的一個例子。while循環和多個條件
$s = 1;
while ($result_row = mysql_fetch_assoc($query) && $s < 5)
{
echo $result_row['id'];
$s++;
}
這是可能的,但由於=
具有較低precedence比&&
你需要括號,以確保您的語句是正確解釋:
while (($result_row = mysql_fetch_assoc($query)) && ($s < 5))
左右$s < 5
括號是這裏不需要,但我爲了清楚起見,已經包括了它
但是,僅通過添加LIMIT 5
來修改查詢以返回5行會更容易。
SELECT ...
FROM yourtable
ORDER BY ...
LIMIT 5
你可以嘗試:
$s=1
while ($result_row = mysql_fetch_assoc($query))
{
echo $result_row['id'];
$s++;
if($s>5){
break;
}
}
,而我認爲沒有錯在。另一方面是做這樣的事情。
$s = 1;
while ($result_row = mysql_fetch_assoc($query))
{
if($s < 5) {
//enter the condition
}
$s++;
}
的$result_row
值可能被設置爲mysql_fetch_assoc($query)
回報一些真實的事情十歲上下$s
是否小於5。所以想讀$result_row
作爲字典不再適用於布爾條件。
您可以使用括號來指定事情變得究竟是如何解析:
while (($result_row = mysql_fetch_assoc($query)) && ($s < 5))
這樣,$result_row
被設置爲mysql_fetch_assoc($query)
,這是你想要的,和循環一直連續的邏輯值的作業返回true-ish,以及s
小於5.
確定這是可能的。你試過了嗎?整個「while」條件,無論它有多少組件,都必須評估爲TRUE或FALSE。這是唯一的要求。在像這樣的複合語句中做一個賦值時要小心,儘管...由於運算符的優先級,'$ result_row'可能沒有得到你所期望的。 – 2012-08-15 21:01:57
你的邏輯是正確的。錯誤說的是什麼? – 2012-08-15 21:01:58
絕對有可能就像其他任何控制結構一樣。它只需評估爲真或假。 – j08691 2012-08-15 21:02:04