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

Ale*_*lex 3 php variables reference ternary-operator

为什么这不起作用?

$a = 'FOO';

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

echo $foo;
Run Code Online (Sandbox Code Playgroud)

我得到一个解析错误:|

mar*_*rio 7

如果要使用三元语句分配引用,则需要这种笨拙的解决方法:

 list($foo) = $a ? array(&$a) : array('whatever');
Run Code Online (Sandbox Code Playgroud)

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

  • 什么在世界上. (4认同)

Bol*_*ock 6

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

现在,它不起作用的原因是因为通过引用分配不同于在PHP中分配正常值表达式.您不能像?:操作中那样使用操作符的引用return &$foo;.有关更多信息,请参阅这些有关PHP参考的手册

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

if ($a)
    $foo = &$a;
else
    $foo = 'whatever';
Run Code Online (Sandbox Code Playgroud)

但是为什么你想要使用像这样的引用是超出我的(除非这是PHP 4,即使那样你也不应该再使用PHP 4).