问号冒号操作符的含义
这个问题在这里已经有了答案:
它是if
语句的简写。
$username = $_COOKIE['user'] ?: getusername($_COOKIE['user']);
是相同的
if( $_COOKIE['user'] )
{
$username = $_COOKIE['user'];
}
else
{
$username = getusername($_COOKIE['user']);
}
请参阅测试套件:https://3v4l.org/6XMc4
但在这个例子中,函数'getusername'可能无法正确工作,因为只有当$_COOKIE['user']
为empty
时才会碰到else
。 所以, getusername()
里面的参数也是空的。
这是短的PHP,例如:
(true == true ? echo "this is true" : "this is false")
写出这意味着:
if (true == true) {
echo "This is true";
}
else {
echo "This is false";
}
在你的例子中,只有一个else语句。
它被称为三元运算符,类似于通常所称的内联if。 例如,以下两个例子:
a) $genderString = $genderAbbreviation == "M" ? "Male" : "Female";
$genderString = $genderAbbreviation == "M" ? "Male" : "Female";
b)
if ($genderAbbreviation == "M")
{
$genderString = "Male";
}
else
{
$genderString = "Female";
}
这两个都会产生同样的效果。 问号前面的语句被评估为true或false,然后如果为真,冒号前面的语句被执行,并且如果为false,冒号后面的语句被执行。
有关更多信息,可以在PHP文档的以下页面查看标题为“三元运算符”的部分:
http://www.php.net/manual/en/language.operators.comparison.php
链接地址: http://www.djcxy.com/p/10213.html