此行中的?:
是什么意思?
$_COOKIE['user'] ?: getusername($_COOKIE['user']);
谢谢。
答案 0 :(得分:18)
这是if
声明的简写。
$username = $_COOKIE['user'] ?: getusername($_COOKIE['user']);
与
相同if( $_COOKIE['user'] )
{
$username = $_COOKIE['user'];
}
else
{
$username = getusername($_COOKIE['user']);
}
请在此处查看测试套件:https://3v4l.org/6XMc4
但在此示例中,函数“getusername”可能无法正常工作,因为仅当else
为$_COOKIE['user']
时才会触及empty
。因此,getusername()
内的参数也是空的。
答案 1 :(得分:2)
这是简写的php,例如:
(true == true ? echo "this is true" : "this is false")
写出这意味着:
if (true == true) {
echo "This is true";
}
else {
echo "This is false";
}
在您的示例中,只有else语句。
答案 2 :(得分:2)
它被称为三元运算符,类似于通常所说的内联运算符。例如,以下两个例子:
a)$genderString = $genderAbbreviation == "M" ? "Male" : "Female";
b)中
if ($genderAbbreviation == "M")
{
$genderString = "Male";
}
else
{
$genderString = "Female";
}
这两者都具有相同的效果。问号前面的语句被评估为true或false,然后如果为true,则执行冒号前的语句,如果为false,则执行冒号后的语句。
有关详细信息,请查看PHP文档的以下页面上标题为“Ternary Operator”的部分:
http://www.php.net/manual/en/language.operators.comparison.php
答案 3 :(得分:0)
如果$_COOKIE['user']
值存在,那么NULL
其他getusername($_COOKIE['user']
将起作用
这是php中的三元运算符