为什么这不起作用?
$a = 'FOO';
$foo = $a ? &$a : 'whatever'; // <- error here
echo $foo;
我得到一个解析错误:|
答案 0 :(得分:7)
如果您想使用三元语句分配引用,那么您需要这种笨拙的解决方法:
list($foo) = $a ? array(&$a) : array('whatever');
然而,正如其他答案中所述,这很少能节省记忆。
答案 1 :(得分:6)
虽然您标记了问题if-statement,但这不是if语句,但它是一个三元条件表达式。我已经相应地重新制作了它。
现在,它不起作用的原因是因为通过引用分配不同于在PHP中分配正常值表达式。您不能使用?:
运算符的引用,就像在函数中无法return &$foo;
一样。有关更多信息,请参阅这些有关PHP参考的手册页:
如果您使用实际的if语句,它将起作用:
if ($a)
$foo = &$a;
else
$foo = 'whatever';
但是为什么你想要使用这样的引用是超出我的(除非这是PHP 4,即使那时你也不应该再使用PHP 4了。)
答案 2 :(得分:0)
试试这个:
$a ? $foo = &$a : $foo = 'whatever';