带与号的三元运算符[重复]
Posted
技术标签:
【中文标题】带与号的三元运算符[重复]【英文标题】:ternary operator with ampersand [duplicate] 【发布时间】:2015-09-24 21:43:24 【问题描述】:我在代码中的某处使用了跟随:
if (isset($flat[$pid]))
$branch = &$flat[$pid]['items'];
else
$branch = &$tree;
一切正常,但是当我想将其缩短为:
$branch = isset($flat[$pid]) ? &$flat[$pid]['items'] : &$tree;
我明白了:
语法错误,意外的'&' ...
我做错了什么?
【问题讨论】:
***.com/questions/3389928/… 【参考方案1】:这是因为ternary operator 是一个表达式,所以它不会计算为变量。并引用手册:
注意:请注意,三元运算符是一个表达式,它不会计算为变量,而是计算表达式的结果。了解是否要通过引用返回变量很重要。语句 return $var == 42 ? $a : $b;因此,在按引用返回的函数中将不起作用,并且在以后的 php 版本中会发出警告。
【讨论】:
【参考方案2】:这将作为替代方案,
(isset($flat[$pid])) ? ($branch = &$flat[$pid]['items']) : ($branch = &$tree);
编辑:
最短可以走两行,
@$temp = &$flat[$pid]['items'];
$branch = &$isset($flat[$pid]) ? "temp" : "tree";
【讨论】:
非常神秘:) 在这种情况下我更喜欢if
子句。以上是关于带与号的三元运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章