Давайте попробуем:
$x =& true?$y:$x;
Parse error: syntax error, unexpected '?', expecting T_PAAMAYIM_NEKUDOTAYIM in...
$x = true?&$y:&$x;
Parse error: syntax error, unexpected '&' in...
Итак, вы видите, это даже не анализируется. Wikken, вероятно, прав в том, почему это не разрешено.
Вы можете обойти это с помощью функции:
function &ternaryRef($cond, &$iftrue, &$iffalse=NULL) {
if ($cond)
return $iftrue;
else
return $iffalse;
}
$x = 4;
$a = &ternaryRef(true, $x);
xdebug_debug_zval('a');
$b = &ternaryRef(false, $x);
xdebug_debug_zval('b');
дает:
a:
<i>(refcount=2, is_ref=1)</i>,int 4
б:
<i>(refcount=1, is_ref=0)</i>,null