首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP & references,操作符优先

PHP & references,操作符优先
EN

Stack Overflow用户
提问于 2013-07-27 08:50:39
回答 2查看 72关注 0票数 0

我使用了引用操作符&如下所示

代码语言:javascript
运行
复制
$root=empty($root)?&$this->_item:&$parent;

它捕捉到一个例外:

代码语言:javascript
运行
复制
Multiple annotations found at this line:

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

但我这样写:

代码语言:javascript
运行
复制
if (empty($root)) {
        $root = &$this->_item;
    } else {
        $root = &$parent;
    }

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

我阅读了php 操作优先手册,&大于?:。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-27 09:09:08

不能在三元运算符中使用引用。根据PHP手册

注意:请注意,三元操作符是一个语句,它不是计算变量,而是计算语句的结果。这一点很重要,要知道是否要通过引用返回变量。

所以,您要么不用引用就可以使用它,要么使用长表单:

代码语言:javascript
运行
复制
if (empty($root)) {
    $root = &$this->_item;
} else {
    $root = &$parent;
}
票数 0
EN

Stack Overflow用户

发布于 2013-07-27 08:52:06

试着像

代码语言:javascript
运行
复制
$root=(empty($root)) ? &$this->_item : &$parent;

或者像这样

代码语言:javascript
运行
复制
$root=(empty($root) == 'true') ? &$this->_item : &$parent;

正如Paul Dixon说的,您不需要参考.So,您可以直接尝试如下

代码语言:javascript
运行
复制
$root=(empty($root)) ? $this->_item : $parent;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17896019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档