2016-09-13 72 views
0

我有這樣的代碼:PHP短路評價

if (!in_array('array_item', $body) || !is_int($body['array_item'])) 
    throw new Exception(); 

現在由於短路我希望is_int不若array_item不存在$body執行。不過,我仍然從PHP投訴「未定義索引array_item」,我認爲這是從$body['array_item']

有人可以向我解釋爲什麼$body['array_item']執行,如果is_int不是?

+0

工作正常我的PHP 7.0.8安裝。 '||'不發出警告。 –

+2

@ chris85:錯。如果它是'&&',則兩者都必須進行測試。這就是爲什麼它是允許短路的「||」。如果'或'的任何部分是真的,那麼整個事情就是真實的,這意味着後面的術語可以被跳過。 –

+0

啊誤讀了。是的,這是有道理的。這裏沒有通知https://3v4l.org/hnHM8 – chris85

回答

4

in_array在數組中尋找。如果你想看,如果一個密鑰存在,使用array_key_exists而不是

if (!array_key_exists('array_item', $body) || !is_int($body['array_item'])) 
    throw new Exception(); 
+0

啊,就是這樣!謝謝,愚蠢的錯誤。 – DaedalusAlpha