【问题标题】:Why reference can't be chosen with ternary operator? [duplicate]为什么不能用三元运算符选择引用? [复制]
【发布时间】:2018-11-09 04:18:01
【问题描述】:

这个sn-p的代码:

$a = $condition ? &$x : &$y;

产生错误:

PHP 解析错误:语法错误,php shell 代码中出现意外的 '&'

为什么 PHP 不允许在三元运算符中按条件选择引用?

【问题讨论】:

  • this 有帮助吗?
  • 我猜这只是语法解析器的一个遗漏(故意或意外),但我对此没有任何进一步的信息。我确实看到它具有合理的预期结果(尽管代码本身确实很混乱,即使允许也不应该使用)
  • @FedericoklezCulloca 不多。没有合适的替代方案,像$x=1;$y=3;list($a) = 1>0 ? [&$x] : [&$y];$a=33;var_dump($a,$x,$y); 这样的解决方案会破坏预期的语义。也没有很好的解释......

标签: php reference ternary-operator


【解决方案1】:

试试这个

$a = &${($condition)?'x':'y'};

【讨论】:

  • 谢谢,不是干净的解决方案,但至少有效。
猜你喜欢
  • 2018-03-16
  • 2014-03-15
  • 2017-09-06
  • 2013-07-30
  • 1970-01-01
  • 2011-09-24
  • 2013-09-21
  • 2014-11-29
  • 1970-01-01
相关资源
最近更新 更多