爲什麼double不等於PHP for循環?以下作品:雙等於for循環?
$cnt = 5;
for ($z = 0; $z <= $cnt; $z++) {
echo $z."!<br />";
}
但爲什麼不能正常工作?
$cnt = 5;
for ($z = 0; $z == $cnt; $z++) {
echo $z."!<br />";
}
爲什麼double不等於PHP for循環?以下作品:雙等於for循環?
$cnt = 5;
for ($z = 0; $z <= $cnt; $z++) {
echo $z."!<br />";
}
但爲什麼不能正常工作?
$cnt = 5;
for ($z = 0; $z == $cnt; $z++) {
echo $z."!<br />";
}
僅當條件評估爲true
時,循環才執行。在第一次迭代中,$z == $cnt
是false
,所以循環從不執行。
一個常見的循環策略是使用一個sentinel value:
$cnt = 5;
$stop = $cnt + 1;
for ($z = 0; $z != $stop; $z++) {
. . .
}
注意,比較是否定的(或!=
!==
)。數值循環變量通常不需要使用標記(我不會推薦它用於您的發佈代碼),但對於其他情況(例如$stop
代表null
,非法值等)很有用。當循環變量以不易表徵的模式變得簡單時,它特別有用。
因爲在第一次迭代$z != $cnt
,所以循環立即停止。
的for
的語法是:
for (<init>; <condition>; <increment>)
環路測試<condition>
每次迭代之前。如果它是true
,它會執行該迭代;如果它是false
,則循環終止。
就你而言,由於$z == $cnt
在第一次迭代之前是false
,所以循環立即終止。
做你想做的事,把測試顛倒過來。由於原始版本使用的是<=
而不是<
,因此您還需要將最終值增加1。請注意,在這兩種情況下,循環執行$cnt+1
次,因爲你從0
for ($z = 0; $z != $cnt+1; $z++)
開始讓我們來看看這個從電腦的角度來看:
如果我是一個電腦,這是你告訴我要做:
麻煩的是,5不等於0,並且永遠不會,所以循環將簡單地跳過。如果你在循環內有$ cnt = $ z + 1,這將是一個無限循環。
所以,你看,==工作得很好,它根本不會做你認爲它應該做的事情。
希望這會有所幫助!
for循環通過循環工作,直到條件變爲false。在第一個例子中,循環將執行到z = 5之後,z不會再小於或等於cnt(z從0開始並通過每個循環遞增)。在第二個示例中,$ z == $ cnt作爲您的條件,並且由於z = 0和cnt = 5,循環將自動停止,因爲條件爲false。你可以使用不等於,而不是像下面這樣:
$cnt = 6;
for ($z = 0; $z != $cnt; $z++) {
echo $z."!<br />";
}
你是什麼意思,它不起作用? '0 == 5'是錯誤的,所以循環永遠不會執行。 –
叮咚。我知道我忽略了一些非常簡單的事情。謝謝。 – Darius
我在找的是: $ cnt = 5; ($ z = 0; $ z!= $ cnt; $ z ++){ echo $ z。「!
」; } – Darius