8

以下类型的 if/else 语法的名称是什么:

print $foo = ($hour < 12) ? "Good morning!" : "Good afternoon!";

我在 php 手册中找不到任何专用页面。我知道它存在,因为我(去年)用它读过一本书,现在我找到了这篇文章

4

2 回答 2

14

这称为三元表达式

http://php.net/manual/en/language.expressions.php

您应该注意,这不是“if 的替代语法”,因为它不应该用于控制程序的流程。

在设置变量的简单示例中,它可以帮助您避免冗长的 if 语句,如下所示:(参考:php docs

// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// The above is identical to this if/else statement
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

但是,它可以用于其他地方,而不仅仅是简单的变量赋值

function say($a, $b) {
    echo "{$a} {$b}";
}

$foo = false;

say('hello', $foo ? 'world' : 'planet');

//=> hello planet
于 2012-12-01T23:39:38.163 回答
10

它被称为三元运算符——尽管许多人称它为“?:运算符”,因为“三元”是一个很少使用的词。

于 2012-12-01T23:40:00.670 回答