Ternary Operators. Possible for a one sided action

2019-01-18 22:48发布

I've used ternary operators for a while and was wondering if there was a method to let say call a function without the else clause. Example:

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

}

Now obviously we can leave out the else to make:

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

Now for a ternary How can you 'by pass' the else clause if the condition returns false?

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

Either a mystery or not possible?

3条回答
ゆ 、 Hurt°
2楼-- · 2019-01-18 23:13

Put zero after colon. Also, assuming you're on Perl, you may use better 'condition and action()', 'action() if condition' idioms.

查看更多
乱世女痞
3楼-- · 2019-01-18 23:26

Short-circuit

isset($foo) and callFunction();

Reverse the condition and omit the second argument

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

or return just "something"

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

However, the ternary operators is designed to conditionally fetch a value out of two possible values. You are calling a function, thus it seems you are really looking for if and misuse ?: to save characters?

if (isset($foo)) callFunction();
查看更多
欢心
4楼-- · 2019-01-18 23:28

Why would you use a ternary operator in this case? The ternary operator is meant to be used when there are two possible scenarios and doesn't make much sense in the case where you only care about the if case. If you have to do it however, simply leave the case empty: (cond)?do_something():;

查看更多
登录 后发表回答