18

我使用三元运算符有一段时间了,想知道是否有一种方法可以让我们在没有else子句的情况下调用函数。例子:

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

}

现在显然我们可以省略elseto make:

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

现在是三元组,如果条件返回 false,您如何“绕过”else 子句?

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

是神秘还是不可能?

4

3 回答 3

37

短路

isset($foo) and callFunction();

反转条件并省略第二个参数

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

或只返回“某物”

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

但是,三元运算符旨在有条件地从两个可能的值中提取一个值。您正在调用一个函数,因此您似乎真的在寻找if并滥用?:来保存字符?

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

在这种情况下,为什么要使用三元运算符?三元运算符意味着在有两种可能的情况时使用,并且在您只关心情况的情况下没有多大意义if。但是,如果您必须这样做,只需将案例留空:(cond)?do_something():;

于 2013-01-25T11:33:44.443 回答
0

在冒号后面加上零。此外,假设您使用 Perl,您可能会使用更好的 'condition and action()'、'action() if condition' 习语。

于 2013-01-25T11:38:07.027 回答