我试图理解这一点:
$page = isset($requestvars['page']) ? $requestvars['page'] : 1;
$product = isset($requestvars['product']) ? $requestvars['product'] : ''
但我不理解“?”确实......这就像一个简单的if?
由于
答案 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;
它们只是编写内联的简短形式。在测试时保持干净的代码非常有用。