[英]Else If block and curly brackets
知道在PHP中我們可以忽略條件塊中的大括號,在“if”,“else if”或“else”標記之后只有一個函數/行,如下所示:
if (myVal == "1")
doThis();
else if (myVal == "2")
doThat();
else
doNothing();
我問自己是否有這樣的事情:
if (myVal == "1")
doThis();
else
if (myVal2 == true)
doThat();
else
doNothing();
被PHP看作是這樣的:
if (myVal == "1")
{ doThis(); }
else
{
if (myVal2 == true)
{ doThat(); }
else
{ doNothing(); }
}
或這個 :
if (myVal == "1")
{ doThis(); }
else if(myVal2 == true)
{ doThat(); }
else
{ doNothing(); }
簡短版本:其他人之后的“換行符”是否足以將其從一個“if”語句中分離出來,還是會被視為“if if else”
編輯我自己的問題以獲得有關我的猜測的確認:
if(false)
echo "1";
else
if (false)
echo "2";
else
echo "3";
顯示“3”而以下是拋出錯誤,因為找到了兩個else語句:
if(false)
echo "1";
else
if (false)
echo "2";
else
echo "4";
else
echo "3";
所以斷線似乎沒有任何區別,唯一重要的是“if”和“else”計數。
如果沒有大括號,PHP將僅將下一行視為要執行的代碼塊。
if (myVal == "1")
doThis();
else
if (myVal2 == true)
doThat();
else
doNothing();
如果myVal
為"1"
doThis();
是下一行,因此被選為要執行的代碼塊。 如果那里有更多的代碼:
if (myVal == "1")
doThis();
doThisToo();
它仍然只執行doThis()
作為if
語句的一部分,而doThisToo()
將始終執行。
如果myVal != "1"
它會在else
條件中選擇第一個塊並僅執行該操作。 在這種情況下,需要評估另一個if
語句:
if (myVal2 == true)
這個邏輯繼續:通過獲取下一行或下一個由大括號包裝標識的塊來識別要執行的下一個代碼塊。
我認為你的兩個例子結果完全一樣 。
else
總是屬於前面的if
除非花括號指定否則。
if
(包括可選的else
及其后續語句為單語句或大括號包裝塊)總是被視為sigle語句本身,所以
{
if(...) {} else {}
}
實際上是一樣的
if(...) {} else {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.