PHP中的反向分配(从LEFT到RIGHT)。

| 我有以下情况:
if (isset($x)){
   $y_class = \'new value\';
}else { 
   $z_class = \'new value\';
}
我可以将上述
if
条件转换为三元吗?我的意思是,有没有办法将LEFT分配给RIGHT? 虚构代码:
\'new value\' = (isset($x)) ? $y_class : $z_class;
    
已邀请:
你可以这样做:
${(isset($x)?$y_class:$z_class)} = \'new value\';
强制链接到有关变量变量的php文档。     
好吧,如果
$y_class
$z_class
是硬编码的,则可以执行以下操作,但这只会使代码的可读性降低:
$var = isset($x) ? \"y_class\" : \"z_class\";
$$var = \'new value\';
当然,这仍然是从右到左的分配。据我所知,该语言中没有这样的语法允许从左到右分配。     
这是我可以创建的最干净的实现。 (基本上是前2个答案的组合)。
${(isset($x) ? \'y\':\'z\'). \'_class\'} = \'new value\';
我最初以为使用
list()
语言构造,它虽然不算小,但是无论如何我还是实现了它。
list($y_class, $z_class) = isset($x) ? [\'new value\', $z_class] : [ $y_class, \'new value\'];
如果可能未设置$ y_class或$ z_class,则必须这样做
list($y_class, $z_class) = isset($x) ? [\'new value\', isset($z_class) ? $z_class : null] : [ isset($y_class) ? $y_class : null, \'new value\'];
两个列表示例都将导致两个变量都被赋值。     

要回复问题请先登录注册