2014-02-26 42 views
0

javascript,我可以使用,例如這樣的表述:Javascript-like ||在PHP

window.foo = window.foo || []; 

如果沒有window.foo它會被分配到陣列,但不會轉化成boolean

但是,如果我會在php做這樣的事情,我會得到truefalse。 (ig。boolean結果,不等於true的值)

爲什麼存在這種差異?

PS這個問題不是關於如何使用,而是問題是關於爲什麼。

+0

使用特雷納裏,而不是 – k102

+0

@ K102我知道和使用它,尤其是短表':'這一點,只是想知道語言 – baldrs

+0

之間的區別「爲什麼不一樣?」 - 因爲這兩種語言以兩種不同的方式實現邏輯或操作符。這不一樣。因爲它不同。 – deceze

回答

4

區別在於操作員返回的內容。在PHP中,邏輯運算符返回布爾值。在JavaScript中,邏輯運算符返回實際的操作數,並依賴於隱式轉換將它們轉換爲布爾值,當上下文需要時。

如果你想,如果結果爲真,並最後在PHP否則返回第一個操作數的功能,您可以使用三元運算符的速記形式(?:):

PHP.net說:

從PHP 5.3開始,可以省略三元運算符的中間部分。表達式expr1?:如果expr1的計算結果爲TRUE,則expr3返回expr1,否則返回expr3。

+0

我總是對提高自己以及當前和未來的答案感興趣,因此留下評論以配合-1會很受歡迎。 – Tibos

+0

我沒有downvote,但可以爲這樣的聲明「返回第一個操作數,如果它確定」。我不知道PHP,但我懷疑有一個「OK」的概念;) – plalx

+0

@plalx感謝您的評論。我認爲PHP.net的引用會給出足夠的準確性答案,並允許更加非正式的定義。在重新閱讀時,我意識到非正式並沒有增加任何東西,所以我根據你的建議進行了修正。 – Tibos