4
我有這一點的PHP代碼:爲什麼`echo的輸出是真的? 'a':是嗎? 'b':'c';`'b'?
echo true ? 'a' : true ? 'b' : 'c';
的這個輸出是:
b
但我預計產量爲:
一
我有這一點的PHP代碼:爲什麼`echo的輸出是真的? 'a':是嗎? 'b':'c';`'b'?
echo true ? 'a' : true ? 'b' : 'c';
的這個輸出是:
b
但我預計產量爲:
一
因爲你的代碼計算是這樣的:
echo (true ? 'a' : true) ? 'b' : 'c';
它等同於:
echo (true) ? 'b' : 'c';
那麼結果是'b'
php中的三元運算符是左關聯的。
您需要使用
echo true ? 'a' : (true ? 'b' : 'c');
__Don」 t__嵌套三元操作或者......它使你的代碼不可讀,並且被證明是不好的做法,因爲邏輯不像你期望的那樣執行 –
echo(true? 'a':(真?'b':'c')); – 2013-02-07 12:34:56
http://www.php.net/manual/en/language.operators.comparison.php#example-121 – deceze