我使用了引用操作符&如下所示
$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 操作优先手册,&大于?:。
发布于 2013-07-27 01:09:08
不能在三元运算符中使用引用。根据PHP手册
注意:请注意,三元操作符是一个语句,它不是计算变量,而是计算语句的结果。这一点很重要,要知道是否要通过引用返回变量。
所以,您要么不用引用就可以使用它,要么使用长表单:
if (empty($root)) {
$root = &$this->_item;
} else {
$root = &$parent;
}
发布于 2013-07-27 00:52:06
试着像
$root=(empty($root)) ? &$this->_item : &$parent;
或者像这样
$root=(empty($root) == 'true') ? &$this->_item : &$parent;
正如Paul Dixon说的,您不需要参考.So,您可以直接尝试如下
$root=(empty($root)) ? $this->_item : $parent;
https://stackoverflow.com/questions/17896019
复制