这行代码中的 ?:
是什么意思?
$_COOKIE['user'] ?: getusername($_COOKIE['user']);
谢谢。
这行代码中的 ?:
是什么意思?
$_COOKIE['user'] ?: getusername($_COOKIE['user']);
谢谢。
它是一个 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']
为空时才会进入else
分支。因此,getusername()
内的参数也是空的。
$username = $_COOKIE['user'] ?: getusername($_COOKIE['user']);
。那是否意味着 if($_COOKIE['user']) { $username = $_COOKIE['user']; } else { $username = getusername($_COOKIE['user']); }
? - Lewis$a = $b ?: $c;
时,无论如何 $a
的值将等于 $b
或 $c
,而在 $a = ($b > 5) ?: $c;
中,$a
只能够等于 true
或 $c
,永远不会等于 $b
。这是一个棘手的细微差别。 - Tyler V.$var = isset($something) ?: $something
,然后得到 if (isset($result)) { $var = $result } else { $var = false; }
。只能回到 $var = isset($something) ? $something : null
了... :< - i336_isset()
或empty()
相同),如果不存在则分配另一个值,可以使用??
运算符。例如:$myVar = $varNotExists ?? 'this will be the value of $myVar because $varNotExists does not exist';
- Gavin这是PHP的简写形式,例如:
(true == true ? echo "this is true" : "this is false")
展开写就是:
if (true == true) {
echo "This is true";
}
else {
echo "This is false";
}
它被称为三元运算符,类似于通常称为内联if的东西。例如,以下两个示例:
a) $genderString = $genderAbbreviation == "M" ? "男" : "女";
b)
if ($genderAbbreviation == "M")
{
$genderString = "Male";
}
else
{
$genderString = "Female";
}
http://www.php.net/manual/en/language.operators.comparison.php
$_COOKIE['user']
的值存在,则返回NULL
,否则将执行getusername($_COOKIE['user'])
。