2013-02-07 124 views
4

我有這一點的PHP代碼:爲什麼`echo的輸出是真的? 'a':是嗎? 'b':'c';`'b'?

echo true ? 'a' : true ? 'b' : 'c'; 

的這個輸出是:

b

但我預計產量爲:

+3

__Don」 t__嵌套三元操作或者......它使你的代碼不可讀,並且被證明是不好的做法,因爲邏輯不像你期望的那樣執行 –

+2

echo(true? 'a':(真?'b':'c')); – 2013-02-07 12:34:56

+0

http://www.php.net/manual/en/language.operators.comparison.php#example-121 – deceze

回答

2

因爲你的代碼計算是這樣的:

echo (true ? 'a' : true) ? 'b' : 'c'; 

它等同於:

echo (true) ? 'b' : 'c'; 

那麼結果是'b'

11

php中的三元運算符是左關聯的。

您需要使用

echo true ? 'a' : (true ? 'b' : 'c'); 
相關問題