Что означает ?:
в этой строке?
$_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', вероятно, не работает правильно, потому что она попадает в else
, только когда $_COOKIE['user']
- 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. Например, следующие два примера:
a) $genderString = $genderAbbreviation == "M" ? "Male" : "Female";
б)
if ($genderAbbreviation == "M")
{
$genderString = "Male";
}
else
{
$genderString = "Female";
}
Оба они будут иметь тот же эффект. Утверждение перед вопросительным знаком оценивается как истинное или ложное, а затем, если true, выполняется оператор перед двоеточием, а если false, то выполняется инструкция после двоеточия.
Для получения дополнительной информации вы можете проверить раздел "Терминальный оператор" на следующей странице документации PHP:
http://www.php.net/manual/en/language.operators.comparison.php
Если значение $_COOKIE['user']
существует, тогда NULL
else getusername($_COOKIE['user']
будет работать
это тернарный оператор в php