三元运算符不使用 PHP 中的引用变量


Ternary operator not working with reference variables in PHP

为什么这不起作用?

$a = 'FOO';
$foo = $a ? &$a : 'whatever'; // <- error here
echo $foo;

我收到解析错误:|

如果要

使用三元语句分配引用,则需要以下笨拙的解决方法:

 list($foo) = $a ? array(&$a) : array('whatever');

但是,正如其他答案中所述,这很少节省内存。

虽然你标记了你的问题if语句,但这不是一个if语句,它是一个三元条件表达式。我已经相应地重新标记了它。

现在,它不起作用的原因是,通过引用分配与在 PHP 中分配普通值表达式不同。不能像在函数中执行return &$foo;一样将引用与 ?: 运算符一起使用。有关 PHP 参考,请参阅以下手册页:

  • 参考文献的作用
  • 返回引用

如果您使用实际的 if 语句,它将起作用:

if ($a)
    $foo = &$a;
else
    $foo = 'whatever';

但是为什么你想使用这样的引用超出了我的范围(除非这是 PHP 4,即使这样你也不应该再使用 PHP 4)。

试试这个:

$a ? $foo = &$a : $foo = 'whatever';