Ale*_*lex 3 php variables reference ternary-operator
为什么这不起作用?
$a = 'FOO';
$foo = $a ? &$a : 'whatever'; // <- error here
echo $foo;
Run Code Online (Sandbox Code Playgroud)
我得到一个解析错误:|
如果要使用三元语句分配引用,则需要这种笨拙的解决方法:
list($foo) = $a ? array(&$a) : array('whatever');
Run Code Online (Sandbox Code Playgroud)
但是,正如其他答案所述,这很少能节省内存.
虽然您标记了问题if语句,但这不是if语句,但它是一个三元条件表达式.我已经相应地重新制作了它.
现在,它不起作用的原因是因为通过引用分配不同于在PHP中分配正常值表达式.您不能像?:操作中那样使用操作符的引用return &$foo;.有关更多信息,请参阅这些有关PHP参考的手册
如果您使用实际的if语句,它将起作用:
if ($a)
$foo = &$a;
else
$foo = 'whatever';
Run Code Online (Sandbox Code Playgroud)
但是为什么你想要使用像这样的引用是超出我的(除非这是PHP 4,即使那样你也不应该再使用PHP 4).