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

时间:2011-05-09 01:43:11

标签: php variables reference ternary-operator

为什么这不起作用?

$a = 'FOO';

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

echo $foo;

我得到一个解析错误:|

3 个答案:

答案 0 :(得分:7)

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

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

然而,正如其他答案中所述,这很少能节省记忆。

答案 1 :(得分:6)

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

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

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

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

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

答案 2 :(得分:0)

试试这个:

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