4
在PHP 7,下面的片段奇怪的打印true
:爲什麼我需要投這個布爾表達式?
$b = true and false;
var_dump($b);
但是,如果我投它,它正確打印false
:
$b = (bool)(true and false);
var_dump($b);
是什麼原因導致這種情況發生的現象?
在PHP 7,下面的片段奇怪的打印true
:爲什麼我需要投這個布爾表達式?
$b = true and false;
var_dump($b);
但是,如果我投它,它正確打印false
:
$b = (bool)(true and false);
var_dump($b);
是什麼原因導致這種情況發生的現象?
這不是演員,它是括號。 and
比=
優先級高,所以你的第一個語句都被當作
($b = true) and false;
你需要寫:
$b = (true and false);
或
$b = true && false;
&&
和and
是除了它們的優先級等同(||
和or
也是如此)。
這不是鑄造,但括號:
$b = (true and false);
var_dump($b);
# => bool(false)
這是因爲=
binds more tightly than and
or or
。
另外,這也適用:
$b = true && false;
var_dump($b);
# => bool(false)
&&
和||
綁定比=
更加緊密。
參見:http://php.net/manual/en/language.operators.precedence.php'和'的優先級低於'=',所以你基本上做的是:'($ b = true)假如你看到這個,你會看到:'var_dump($ b = true和false);' – Rizier123