簡體   English   中英

否則如果是塊和大括號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM