PHP语法问题:问号和冒号是什么意思?
2022-08-30 08:12:27
这是 PHP 三元运算符(也称为条件运算符) - 如果第一个操作数计算为 true,则计算为第二个操作数,否则计算为第三个操作数。
可以将其视为可以在表达式中使用的“if”语句。在根据某些条件进行简洁的作业时非常有用,例如
$param = isset($_GET['param']) ? $_GET['param'] : 'default';
还有一个速记版本(在 PHP 5.3 以后)。您可以省略中间的操作数。如果运算符为 true,则运算符将计算为第一个操作数,否则将计算为第三个操作数。例如:
$result = $x ?: 'default';
值得一提的是,上面的代码在使用即 $_GET 或 $_POST 变量时会抛出未定义的索引通知,并防止我们需要使用更长的版本,以及 PHP7 中引入的空合并运算符:isset
$param = $_GET['param'] ?? 'default';
它是 if-else 运算符的三元形式。上面的语句基本上是这样的:
if ($add_review) then {
return FALSE; //$add_review evaluated as True
} else {
return $arg //$add_review evaluated as False
}
有关 PHP 中三元 op 的更多详细信息,请参阅此处:http://www.addedbytes.com/php/ternary-conditionals/