2013-01-25 52 views
9

我已經使用了一段時間的三元運算符,並想知道是否有一種方法讓我們說沒有else子句調用一個函數。例如:三元運算符。可能是單方面行動?

if(isset($foo)){ 
    callFunction(); 
}else{ 

} 

現在很明顯,我們可以離開了else做:

if(isset($foo)){ 
    callFunction(); 
} 

現在對於三元你怎麼能「旁路」 else子句如果條件返回false?

(isset($foo))?callFunction():'do nothing!!'; 

不是神祕還是不可能?

+3

只是把它留空 –

+1

現在,這讓我感到很蠢......大聲笑 – sourRaspberri

+0

你不需要問這個,你可以試試它,這是微不足道的。 – markus

回答

18

短路

isset($foo) and callFunction(); 

反轉的條件,並省略第二個參數

!isset($foo) ?: callFunction(); 

或只返回「東西「

isset($foo) ? callFunction() : null; 

但是,三元運算符旨在有條件地從兩個可能值中提取值。你正在調用一個函數,因此看起來你真的在尋找if和誤用?:來保存字符?

if (isset($foo)) callFunction(); 
1

爲什麼你會在這種情況下使用三元操作符?當有兩種可能的情況時,三元操作符被用於使用,在您只關心if情況下沒有多大意義。如果您必須做到這一點然而,簡單地離開的情況下空:(cond)?do_something():;

+0

上面是一個例子。我只是想知道更大的運作。 – sourRaspberri

+0

@Beneto更大的業務?看起來,你錯誤地使用了三元運算符:X – KingCrunch

0

冒號後放零。另外,假設你使用Perl,你可以使用更好的'條件和動作()','動作()如果條件'成語。

+0

關於他使用PHP的標籤;)但是,表達式的短小精悍在PHP中也工作得太'$ condition and action();',但不是其他符號。這裏你至少可以省略大括號,但那就是所有'if($ condition)action();' – KingCrunch