Как мы знаем, если мы используем javascript или python, мы можем использовать приведенный ниже оператор, чтобы получить переменную или ее значение по умолчанию.
// javascript
alert(a || 'default');
# python
print(a or 'default');
Хотя в php нам может потребоваться позвонить ниже:
echo $a ? $a : 'default';
И если $ a - очень длинное утверждение, дело еще хуже:
echo (
we_made_many_calculation_here_and_this_is_the_result() ?
we_made_many_calculation_here_and_this_is_the_result() :
'default'
);
или
var $result = we_made_many_calculation_here_and_this_is_the_result();
echo $result ? $result : 'default';
любой из вышеперечисленных, я думаю, что это не опрятно.
И я не знаю, как найти ответ, найти инструкцию или встроенную функцию для упрощения работы. Но, пытаясь найти много способов, я не могу найти ответ.
Так что, пожалуйста, помогите.
Относительно этой проблемы: http://php.net/manual/en/language.operators.logical.php#115208
Итак, см. Документацию о тройном операторе, можно использовать:
echo $a ?: 'defaults for a';
Выражение (expr1)? (expr2): (expr3)
(expr1)? (expr2): (expr3)
вычисляется как expr2, если expr1 имеет значение TRUE и expr3, если expr1 оценивается как FALSE.
Начиная с PHP 5.3, можно исключить среднюю часть тернарного оператора. Expression expr1?: Expr3 возвращает expr1, если expr1 имеет значение TRUE и expr3 в противном случае.
См.: http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
Выполнение $ a, когда $ a не определено, все равно даст вам ошибку. К сожалению, единственный правильный способ сделать это при обработке переменной:
echo isset($a) ? $a: 'default';
При работе с длинной функцией вам все равно нужно проверить условия, которые вы хотите проверить, потому что если он вернет false, вы по-прежнему будете дефолтными.
var $result = we_made_many_calculation_here_and_this_is_the_result(); // false
echo $result ? $result : 'default'; // echos default
Тебе нужно:
var $result = we_made_many_calculation_here_and_this_is_the_result();
echo !is_null($result) ? $result : 'default';
Это печальное ограничение в том, что php интерпретирует как false. Здесь вы можете увидеть полный список .
Почему бы не попробовать сделать это наоборот, и начать с установки переменной до значения по умолчанию?
$a = "default";
...
echo $a;
Тогда вам не нужно проверять, установлен ли он или нет - просто используйте переменную.
Это имеет дополнительный бонус, а затем предотвращает (к сожалению, очень распространенную и потенциально сложную задачу) проблему использования неназначенной переменной.
?:
Оператор именно то, что я хочу.
echo $result ?: 'default'
возможно поecho $result ?: 'default'
?