2011-04-15 83 views
2

我有以下条件:逆向分配(从左到右)

if (isset($x)){ 
    $y_class = 'new value'; 
}else { 
    $z_class = 'new value'; 
} 

我可以改变上述if条件为三元?通过这个,我的意思是,有什么办法可以分配从左到右

虚代码:

'new value' = (isset($x)) ? $y_class : $z_class; 

回答

4

你可以这样做:${(isset($x)?$y_class:$z_class)} = 'new value';

强制连接到PHP文件约variable variables

+0

正是我在想.. +1比我快 – 2011-04-15 12:47:29

6

好吧,如果$y_class$z_class是硬编码的,你可以做这样的事情,但是这只是让你的代码的可读性:

$var = isset($x) ? "y_class" : "z_class"; 
$$var = 'new value'; 

和当然,这仍然是从右到左的任务;据我所知,语言中没有这样的语法可以从左到右进行分配。

+0

多数民众赞成罚款**但**如果'$ y_class'和'$ z_class'没有硬编码然后 – diEcho 2011-04-15 12:38:26

+0

那么,他们不一定要硬编码,你也可以“计算”变量名字,但你必须格外小心,不要让用户操纵你不想要的变量。例如,如果变量的名称来自一个GET参数并且不验证它,那么实际上允许用户覆盖任何变量。 – 2011-04-15 12:40:03

+2

我已经给出了这个+1,因为它最接近你想要做的事情,但说实话,我只是坚持你有的“if/else”代码,美元的语法是讨厌的;在我不希望在PHP程序中看到的事情列表中的'eval()'几乎是不好的。 – Spudley 2011-04-15 12:40:30