この行の?:
はどういう意味ですか?
$_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
の場合にのみempty
にヒットするため、正しく機能しない可能性があります。そのため、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と呼ばれるものと同様に、三項演算子として知られています。たとえば、次の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
もし$_COOKIE['user']
値が存在し、次にNULL
それ以外の場合getusername($_COOKIE['user']
動作します
これは、phpの項演算子です。