80

可能重复:
快速 php 语法问题

return $add_review ? FALSE : $arg;

问号和冒号是什么意思?

谢谢

4

2 回答 2

163

这是 PHP三元运算符(也称为条件运算符) - 如果第一个操作数的计算结果为真,则计算为第二个操作数,否则计算为第三个操作数。

将其视为可以在表达式中使用的“if”语句。在根据某些条件进行简明分配时非常有用,例如

$param = isset($_GET['param']) ? $_GET['param'] : 'default';

还有一个简写版本(在 PHP 5.3 及更高版本中)。您可以省略中间操作数。如果为真,则运算符将作为第一个操作数进行计算,否则将作为第三个操作数。例如:

$result = $x ?: 'default';

值得一提的是,上面的代码在使用 $_GET 或 $_POST 变量时会抛出未定义索引通知,并防止我们需要使用更长的版本,isset或者使用PHP7 中引入的空合并运算符:

$param = $_GET['param'] ?? 'default';
于 2009-08-14T09:27:43.260 回答
19

它是 if-else 运算符的三元形式。上面的语句基本上是这样的:

if ($add_review) then {
    return FALSE; //$add_review evaluated as True
} else {
    return $arg //$add_review evaluated as False
}

有关 PHP 中三元运算的更多详细信息,请参见此处:http: //www.addedbytes.com/php/ternary-conditionals/

于 2009-08-14T09:34:33.013 回答