Подтвердить что ты не робот

Уточнение оператора PHP Ternary

Я использую тернарный оператор довольно часто, но я не смог найти что-либо в документации об этом, и я всегда удивлялся этому.

Ниже приведен возможный пример:

echo ($something->message ? $something->message : 'no message');

как вы можете видеть, если сообщение $something- > верное, мы возвращаем сообщение $something- > , но зачем писать его дважды? Есть ли способ сделать что-то вроде:

echo ($something->message ? this : 'no message');

Теперь я не очень разбираюсь в теории программирования, поэтому возможно, что есть причина, по которой первое не может быть связано с чем-то вроде "this", но почему бы и нет? Не приведет ли это к потоку использование тернарного оператора? Для чего-то вроде моего примера это довольно бесполезно, но пусть скажет

echo (function(another_function($variable)) ? function(another_function($variable)) : 'false');

Я не могу найти способ сделать это, поэтому я предполагаю, что это невозможно, если я ошибаюсь, сообщите мне, иначе: почему бы и нет? Почему это невозможно, какова техническая причина, или это просто то, чего никогда не было? Должен ли я объявлять его как переменную, а затем тестировать эту переменную?

4b9b3361

Ответ 1

С PHP 5.3 можно исключить среднюю часть тернарного оператора. Expression expr1?: Expr3 возвращает expr1, если expr1 имеет значение TRUE и expr3 в противном случае.

Источник

Например

$used_value = function1() ?: $default_value;

То же, что и

$check_value = function1(); //doesn't re-evaluate function1()
if( $check_value ) {
    $used_value = $check_value;
} else {
    $used_value = $default_value;
}

Слово для мудрых

Если вы будете зависить от typecasting до TRUE, важно понять, что WILE прибегает к TRUE, а что - нет. Вероятно, стоит наброситься на PHP тип жонглирования и прочитать преобразование типа столы. Например, (bool)array() - FALSE.