18

私はしばらくの間三項演算子を使用していて、else句なしで関数を呼び出すようにするメソッドがあるかどうか疑問に思いました。例:

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

}

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

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

三元の場合、条件がfalseを返した場合、どうすればelse句を「バイパス」できますか?

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

謎か不可能か?

4

3 に答える 3

37

短絡

isset($foo) and callFunction();

条件を逆にして、2番目の引数を省略します

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

または単に「何か」を返す

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

ただし、三項演算子は、2つの可能な値から条件付きで値をフェッチするように設計されています。関数を呼び出しているので、文字を保存するために本当に探していifて誤用しているようですか??:

if (isset($foo)) callFunction();
于 2013-01-25T11:35:40.867 に答える
1

この場合、なぜ三項演算子を使用するのですか?三項演算子は、考えられるシナリオが2つある場合に使用することを目的としており、ケースだけを気にする場合にはあまり意味がありませんifただし、それを行う必要がある場合は、ケースを空のままにしてください。(cond)?do_something():;

于 2013-01-25T11:33:44.443 に答える
0

コロンの後にゼロを置きます。また、Perlを使用していると仮定すると、「condition and action()」、「action()ifcondition」イディオムを使用することもできます。

于 2013-01-25T11:38:07.027 に答える