這兩條線產生不同的結果:在這個PHP表達式周圍放置括號會改變結果。爲什麼?
$r1= true xor true ;
$r2=(true xor true);
var_dump($r1);
var_dump($r2);
輸出:
bool(true)
bool(false)
爲什麼?
Codepen例如:http://codepad.org/O4Kn1YVa
這兩條線產生不同的結果:在這個PHP表達式周圍放置括號會改變結果。爲什麼?
$r1= true xor true ;
$r2=(true xor true);
var_dump($r1);
var_dump($r2);
輸出:
bool(true)
bool(false)
爲什麼?
Codepen例如:http://codepad.org/O4Kn1YVa
http://php.net/manual/en/language.operators.precedence.php
=比XOR
$r1 = true xor true ;
=>
($r1 = true) xor true ; // "=" has highest priority
=>
優先級高$r1 xor true ; // and only now xor
在這種情況下,您不會將xor的結果寫入任何地方並丟失它。
如果結果2是通過括號強制執行順序。
你可能是對的。仍然感覺有點意外。我現在簡化了一下這個例子。也許你也想調整你的答案。 – 2015-04-05 09:37:20
完成。此外,在使用括號括起來的情況下,在字符串連接和三元運算符「?:」中可以獲得相同的行爲。 – Denis 2015-04-05 09:54:40
所有括號要做的就是執行優先級。因此,如果添加它們會產生差異,則您已更改優先順序/執行順序。
其在此處的情況下:http://php.net/manual/en/language.operators.precedence.php
謝謝。這是更有意義的,以消除混淆。 – 2015-04-05 09:24:08
只有一個邏輯結論...... – 2015-04-05 09:21:32
'='運算符比'xor'運算符有更高的[precedence](http://php.net/language.operators.precedence)。 – Gumbo 2015-04-05 09:24:02