2013-01-25 22 views
9

私はしばらくの間、三項演算子を使ってきましたが、else節なしで関数を呼び出す方法があるのだろうかと疑問に思っていました。例:三項演算子。一方的な行動が可能ですか?

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

} 

は今、明らかに私たちは、作るためにelseを残すことができます:

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

今三項のためにどのようにすることができますelse節「パスで」条件がfalseを返した場合は?

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

いずれかの謎はありますか?

+3

ちょうど空白にしておいてください –

+1

これで私は愚かな気分になりました... lol – sourRaspberri

+0

あなたはこれを尋ねる必要はありません、あなたはそれを試してみてください、それは簡単です。 – markus

答えて

18

短絡を

isset($foo) and callFunction(); 

は「条件を逆にして省略する第二引数

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

をあるいは単に返します何か "

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

ただし、3項演算子は、条件付きで2つの値から値を取得するように設計されています。関数を呼び出すと、実際にifを探していて、文字を保存するのに?:を誤って使用しているようですね?

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

この場合、なぜ3値演算子を使用しますか?三項演算子は、2つの可能性のあるシナリオがある場合に使用されるもので、ifのケースのみを扱う場合にはあまり意味がありません。あなたは、それはしかし、単に空のケースのままですに持って場合:(cond)?do_something():;

+0

これは一例です。私はもっ​​と大きな操作については疑問を抱いていました。 – sourRaspberri

+0

@Beneto大きな操作ですか?しかし、実際には三項演算子を誤用しているようです:X – KingCrunch

0

コロンの後にゼロを入れます。また、あなたがPerlを使用していると仮定すると、より良い '条件とアクション()'、 '条件(条件)'のイディオムを使用できます。

+0

タグについてはPHPを使用しています;)しかし、式の短い構文はPHPでも '$ conditionとaction();'で動作しますが、他の表記では機能しません。ここでは、少なくとも中括弧は省略できますが、すべての 'if($ condition)action();' – KingCrunch