我不明白为什么会这样:
$var = 'x';
var_dump($var ?? '' == 'somevalue');
输出string(1) "x"
,而人们应该bool(false)
。
这背后的原因是什么?
想象一个用例,请考虑例如:
// I want to do something only if the optional_parameter is equal to somevalue
if($_GET['optional_parameter'] ?? '' == 'somevalue') {
...
}
答案 0 :(得分:2)
这是运营商优先级的问题,请尝试:
$var = 'x';
var_dump(($var ?? '') == 'somevalue');
更多:http://php.net/manual/en/language.operators.precedence.php
另外一般建议:从来没有太多的parens! :)如果您不确定在给定语言中首先计算的是什么 - 请使用它们!