为什么这不起作用?
$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';