Я использую тернарный оператор довольно часто, но я не смог найти что-либо в документации об этом, и я всегда удивлялся этому.
Ниже приведен пример:
echo ($something->message ? $something->message : 'no message');
как вы можете видеть, если сообщение $ something-> верное, мы возвращаем сообщение $ something->, но зачем писать его дважды? Есть ли способ сделать что-то вроде:
echo ($something->message ? this : 'no message');
Теперь я не очень разбираюсь в теории программирования, так что возможно, что есть причина, по которой первое не может быть связано с чем-то вроде этого, но почему бы и нет? Не приведет ли это к потоку использование тернарного оператора? Для чего-то вроде моего примера это довольно бесполезно, но предположим, что это
echo (function(another_function($variable)) ? function(another_function($variable)) : 'false');
Я не могу найти способ сделать это, поэтому я предполагаю, что это невозможно, если я ошибаюсь, сообщите мне, иначе: почему бы и нет? Почему это невозможно, какова техническая причина, или это просто то, чего никогда не было? Должен ли я объявлять его как переменную, а затем тестировать эту переменную?
Начиная с 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
.