function foo() {
return $result = bar() ? $result : false;
}
function bar() {
return "some_value";
}
foo();
注意:未定义的变量:导致与三元运算符的PHP错误?
这是一个错误?
bar()应该保存到$ result,但它不会。然而病情工作正常,它试图返回$结果或虚假陈述(如果巴()为null或false)
PHP 5.4.24
function foo() {
return $result = bar() ? $result : false;
}
function bar() {
return "some_value";
}
foo();
注意:未定义的变量:导致与三元运算符的PHP错误?
这是一个错误?
bar()应该保存到$ result,但它不会。然而病情工作正常,它试图返回$结果或虚假陈述(如果巴()为null或false)
PHP 5.4.24
这是因为operators precedence。是否
function foo() {
return ($result = bar()) ? $result : false;
}
-so赋值将以更高的优先级进行评估。
这是真棒。 +1 –
太棒了!是的..没有括号它返回$结果作为后续条件的评估。谢谢! –
我们不能做的只是:
function foo() {
return bar() ? $result : false;
}
function bar() {
return "some_value";
}
foo();
..你会得到未定义的'$ result'变量(因为你会尝试返回它) –
更优雅的解决方案:
function foo() {
return bar() ?: false;
}
这是为什么一个bug,它试图读取$结果,但它不是定义,因此在告诉你它的不确定。看起来像是由Design给我的。 –
它从'bar()'中获取值,所以返回'true' =>从而分配未定义的$ result。那有什么问题? – Rikesh
明显的PICNIC在这里.. :) –