三元运算符的PHP错误?

wak*_*neo 0 php ternary operator-keyword

function foo() {
    return $result = bar() ? $result : false;
}

function bar() {
    return "some_value";
}

foo();
Run Code Online (Sandbox Code Playgroud)

注意:未定义的变量:结果

这是一个错误吗?

bar()应该保存到$ result,但它不会.但是条件工作正常并且它试图返回$ result或false语句(如果bar()为NULL或false)

PHP 5.4.24

Alm*_* Do 11

这是因为运营商的优先权.做

function foo() {
    return ($result = bar()) ? $result : false;
}
Run Code Online (Sandbox Code Playgroud)

- 所以赋值将以更高的优先级进行评估.