2010-06-13 87 views
1

在PHP中,有沒有一種方法可以更簡化,而無需使用if()PHP簡化三元操作

$foo = $bar!==0 ? $foo : ''; 

我想知道是否有辦法不重新分配$foo本身如果條件滿足。我知道有一種方法可以在Javascript中執行此操作(使用& &,對吧?),但想知道是否有方法在PHP中執行此操作。

+4

爲什麼你想要更簡單呢?每次遇到類似這樣的事情時,你是否希望那些將要維護代碼的可憐人搜索手冊?我不會。 – 2010-06-13 23:58:47

+0

投票贊成,好點子1月 – Obay 2010-06-14 00:13:24

+2

也是對該評論的讚揚,@Jan。 'if($ bar == 0)$ foo ='';'就像三元一樣簡單,不涉及自賦值,實際上更具可讀性。 – paxdiablo 2010-06-14 00:26:45

回答

5

是的,您也可以在PHP中使用邏輯運算符和(&&)運算符。

$bar === 0 && $foo = ''; 
+0

你有這個方法的任何文檔/教程嗎?我已經看到它的使用,但從來沒有完全理解它。 – 2010-06-14 02:15:38

+2

@Kerry和'if($ foo && $ bar)'一樣。而不僅僅是變量或值,你可以把整個表達式放在那裏,比如'if($ foo == 0 && $ bar ='baz')'。但它不一定只用於'if()'表達式中。 '&&'是一個短路操作符,意味着如果前半部分是'假',它不會評估下半部分。所以'$ foo ='''只會在'$ bar === 0'時才被查看並執行。 – deceze 2010-06-14 02:53:57

+0

哇,很好的解釋,謝謝:) – 2010-06-14 03:29:59

9

在PHP 5.3中,三元運算符的縮寫形式終於到來了,所以您可以執行以下操作。

$foo = $bar ?: ''; 

the Comparison Operators節 - 「自PHP 5.3,就可以離開了三元運算符的中間部分表達表達式1:如果表達式1的值爲TRUE,而表達式3否則expr3返回值爲表達式1。?。」

+0

該代碼不會做op要求的,我沒有看到一種方法來利用短三元運算符在這裏。 – Furgas 2017-08-25 08:40:51