2017-07-27 24 views
-3

我有一段代碼沒有按照我的意圖工作。沒有邏輯陳述的大括號的目的是什麼?

的代碼是大致是這樣的:

foreach ($arrayOfIds as $iterId) 
{ 
    if ($iterId === $unchangingId) 
    { 
     // ... 
    } 

} 

的問題是,它進入if語句無論ID是否匹配與否。

然後我發現我的if語句被錯誤地宣佈了,居然是這樣的:

if ($iterId === $unchangingId); 
{ 
    // ... 
} 

這單分號給我這麼多悲痛。我知道如何/爲什麼我沒有得到編譯器或運行時錯誤,因爲 if($ iterId === $ unchangingId);

但我從來不知道你可以在2個花括號裏面插入代碼,沒有其他任何東西。

我想了解更多關於這個,以及它被用於什麼,如果任何人可以詳細說明它,我會非常感激!

回答

1
if ($iterId === $unchangingId); 
{ 
    // ... 
} 

這是兩個獨立和不相關的結構。用一個語句中使用時,這說法並不一定有它的任何東西,但結尾的分號

if (expression) statement; 

沒有大括號:

一個if結構可採取的形式。所以

if ($iterId === $unchangingId); 

是一個完整的,獨立的東西,你會再與不相關的語句塊包裹在大括號如下:

{ 
    // ... 
} 

這沒有什麼特別之處,內容處理,就好像花大括號不在那裏。

1

在Java中,裸捲曲支撐塊具有局部範圍。在PHP中,它什麼都不做。