2015-02-06 79 views
1

是否可以通過三元運算符爲變量賦值,而不必再次引用同一個變量?通過三元運算符自行分配

例如,有沒有一種方式是這樣的:

a=a=="1"?"yes":"no"; 

可以這樣做?:

a=="1"?"yes":"no"; 

我知道上面可能行也不行,所以我考慮到第一行,我們正在尋求一個簡短的選擇。

這對於小變量名稱(比如上面的例子)來說並不是什麼大問題。但是,如果在使用數組和更大的變量名時有一種方法來幫助保持代碼緊湊,那將會很不錯。我會對Javascript和PHP解決方案感興趣。

+1

沒有就沒有辦法(對PHP) – Rizier123 2015-02-06 06:14:40

+0

不,你的第二個辦法是行不通的。你需要做一些事情,比如你的第一種方式。 – jfriend00 2015-02-06 06:14:41

+0

您必須訪問變量進行讀取,然後進行寫入。 – 2015-02-06 06:25:45

回答

1

否,三元運算符被嚴格定義爲:

p ? vt : vf 

隨着p導致一個布爾(因此測試)的表達式,vt值的情況下,p爲真和在殼體vf測試是錯誤的。沒有辦法引入副作用。當然,測試(可以是函數調用或任何其他測試)可能會導致副作用。

據我所知,在任何情況下,運營商都沒有這種副作用。這可能也是一個壞主意:副作用應該有據可查並且有點明確。如果事情沒有任何語法警告,源代碼變得難以閱讀,調試和理解。

您可以將結果確實分配給像變量:

的JavaScript

var x = 3; 
var x = (x < 3) ? "smaller" : "larger"; 

或者在PHP

$x = 3; 
$x = ($x < 3) ? "smaller" : "larger"; 

在這裏你卻與警告=運營商的價值x將在該指令後改變。

-1

入住這

<?php 
$a = 5;  
$a = ($a==5) ? 'yes' : 'no';  
echo 'the result is '.$a; // the result is yes 
?> 
+0

除了......您剛剛在同一個變量的第二個出現處放置括號,有效_extending _在我的問題的第一行代碼。我想要檢查變量併爲其賦值,而不是多次輸入相同的變量。 – 2015-02-06 06:43:56

+0

Hi @Tristan Bailey,第二行檢查變量$ a並根據條件賦值$ a的新值。沒有第一行,echo的結果將是「結果是否定的」。 – 2015-02-06 09:41:54

+0

Hi @Tristan Bailey,我給出了我的答案的解釋。變量需要被分配一個值,然後檢查這是我試圖從我的答案表達。 – 2016-02-04 05:17:05