0

我使用了引用运算符 & 像这样

$root=empty($root)?&$this->_item:&$parent;

它捕获一个异常:

Multiple annotations found at this line:

- syntax error, unexpected ':'
- syntax error, unexpected '&'

但我是这样写的:

if (empty($root)) {
        $root = &$this->_item;
    } else {
        $root = &$parent;
    }

它过去了。我想知道为什么?

我阅读了有关运算符优先级的php手册,&高于?:。

4

2 回答 2

0

您不能将引用与三元运算符一起使用。根据PHP 手册

注意:请注意,三元运算符是一个语句,它的计算结果不是变量,而是语句的结果。了解是否要通过引用返回变量很重要。

因此,您要么必须在没有引用的情况下使用它,要么使用长格式:

if (empty($root)) {
    $root = &$this->_item;
} else {
    $root = &$parent;
}
于 2013-07-27T09:09:08.840 回答
-1

试试喜欢

$root=(empty($root)) ? &$this->_item : &$parent;

或喜欢

$root=(empty($root) == 'true') ? &$this->_item : &$parent;

正如Paul Dixon所说,您不需要参考。所以您可以直接尝试

$root=(empty($root)) ? $this->_item : $parent;
于 2013-07-27T08:52:06.140 回答