2015-04-07 69 views
2

我見過的PHP代碼的下一句話:或者運營商分配左側

$a OR $a = $b; 

這是什麼代碼的行爲?

這段代碼的目的是什麼?

謝謝,

+2

嗨。請告訴 - 是$ a或$ a = $ b'是SQL查詢的一部分嗎? –

+0

我應該認爲這是PHP中的語法錯誤 - 一個等號是分配,而不是比較。我們需要看到更多的代碼,並且一些解釋/上下文也會很好。 – halfer

+1

這是一個_conditional賦值語句。如果它包含一個「真」值,我希望它會單獨保留_ $ a_的當前值。否則_ $ a_會被設置爲_ $ b_中的值。另一種說法是 - 如果$ a爲'false',則將$ a設置爲$ b的值。或'短路',所以如果$ a是'真正'評估停止。 ; -/ –

回答

1

操作員「OR」是一個邏輯運算符,用於檢查的兩個(或多個)方面有一個爲真。如果$ a或($ a = $ b)爲TRUE。 運算符「==」(在你的問題是=,但我認爲==)是一個比較運算符,用於檢查$ a是否等於$ b(如同樣的值,術語A是真的,術語B是真,其他情況)。 謝謝

+0

您可能想要編輯您的答案,以符合Ryan的評論。原始代碼中的'='是正確的。 – andrewsi

+0

PHP中的符號(=)是一個基本的賦值運算符。對? – Jefersonfs

+0

你是對的。代碼正在做的是檢查'$ a'是否已經有一個值;如果它的值爲false,那麼它將給它賦值'$ b'。它的工作原理是OR操作從左到右計算,如果左邊的計算結果爲true,則右側不會被檢查。我已經在幾個地方看到了這種構造,雖然我喜歡這種緊湊性,但我更願意使用稍微更冗長的代碼,這些代碼在六個月後回來時更容易閱讀。 – andrewsi