“?:”运算符PHP是什么意思

时间:2014-02-05 16:13:12

标签: php

我试图理解这一点:

$page = isset($requestvars['page']) ? $requestvars['page'] : 1;

$product = isset($requestvars['product']) ? $requestvars['product'] : ''

但我不理解“?”确实......这就像一个简单的if?

由于

4 个答案:

答案 0 :(得分:8)

它被称为ternary operator,实际上取代了if else块。

例如:

$page = isset($requestvars['page']) ? $requestvars['page'] : 1;

可以改写为:

if(isset($requestvars['page']))
{
    $page = $requestvars['page'];
}
else
{
    $page = 1;
}

如果设置了值,则三元运算符告诉PHP将$requestvars['page']分配给$page,否则分配1

答案 1 :(得分:1)

这是ternary operator。它就像一个if语句,但它更短。

echo ($a === true) ? 'yep' : 'nope';

自PHP 5.3起,还有一个最短的版本,即?:运算符,它仅测试表达式并在成功时返回表达式,否则返回其他选项。

$foo = getSomethingFromTheDb();
$default = new stdObject;

$object = $foo ?: $default;

答案 2 :(得分:0)

这是一个三元表达。

它更清楚地显示为if / else,但有些人真的很喜欢它们。

答案 3 :(得分:0)

这称为三元操作。它基本上是内联的。

$product = isset($variable) ? do something if true : do something if false;

它们只是编写内联的简短形式。在测试时保持干净的代码非常有用。