Тернарный оператор ?: в PHP позволяет выполнять простое условное сравнение в одной строке.
# Синтаксис $variable = (условие) ? значение_если_истина : значение_если_ложь; # Пример: $age = 25; $message = ( $age >= 18 ) ? 'Доступ разрешен' : 'Доступ запрещен';
Краткий тернарный оператор
Краткий тернарный оператор ?: работает почти так же, как и обычный тернарный оператор, но он пропускает часть "если истина", возвращая тестовое выражение в случае истины.
# Синтаксис
$variable = (условие) ?: значение_если_ложь;
# Пример:
$name = 'Александр';
$displayName = $name ?: 'Гость';
# Аналогичен этому коду
if( $name )
{
$displayName = $name;
}
else
{
$displayName = 'Гость';
}
Оператор объединения с null или оператор Null coalescing
Оператор ?? проверяет, является ли значение NULL или не установлено, и возвращает первое не-NULL значение из списка.
# Синтаксис
$variable = значение1 ?? значение2 ?? значение3;
# Пример:
$username = $_GET['username'] ?? 'Гость';
# В данном примере, если $_GET['username'] не установлен или NULL, переменная $username будет установлена в 'Гость'.
# Аналогичен этому коду
$username = isset( $_GET['username'] ) ? $_GET['username'] : 'Гость';
# Или этому
if( isset( $_GET['username'] ) )
{
$username = $_GET['username'];
}
else
{
$username = 'Гость';
}
Комментарии
3Нашли ошибку или хотите дополнить материал?
Текст комментария удалён автором.
В таком случае, последний пример с $username не работает..
Попробуйте что то вроде этого:
if( empty( $first_name= $_GET[‘first_name']?: '' ));
if( empty( $last_name= $_GET['last_name']?: '' ));
if( $first_name== '' && $last_name== '' )$first_name= 'anonymous';
print_r( mb_convert_case( "USER: $first_name $last_name", MB_CASE_TITLE, "UTF-8" ));
В твоём коде есть ошибки. Вот вариант без ошибок:
$firstName = $_GET['first_name'] ?? '';
$lastName = $_GET['last_name'] ?? '';
$firstName = ($firstName === '' && $lastName === '') ? 'anonymous' : $firstName;
echo mb_convert_case("USER: $firstName $lastName", MB_CASE_TITLE, "UTF-8");