2011-04-15 82 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