我有以下条件:
if (isset($x)){
$y_class = 'new value';
}else {
$z_class = 'new value';
}
我可以将上述if
条件更改为三元组吗?我的意思是,有没有办法将 LEFT 分配给 RIGHT ?
虚构代码:
'new value' = (isset($x)) ? $y_class : $z_class;
答案 0 :(得分:7)
好吧,如果$y_class
和$z_class
是硬编码的,您可以执行类似的操作,但这只会降低您的代码的可读性:
$var = isset($x) ? "y_class" : "z_class";
$$var = 'new value';
当然,这仍然是从右到左的任务;据我所知,语言中没有这样的语法允许从左到右分配。
答案 1 :(得分:5)
你可以这样做:${(isset($x)?$y_class:$z_class)} = 'new value';
答案 2 :(得分:0)
这是我可以创建的最干净的实现。 (基本上是前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'];
两个列表示例都将导致两个变量都被分配一个值。