Я видел много людей, привыкших делать это в своем коде:
$value = isset($text) ? $text : "";
Этот код по существу означает множество $value
в $number
(если он установлен) еще установить $value
в ""
Я немного поэкспериментировал и придумал более чистый синтаксис:
$value = "".$text;
Кроме когда $text
является undefined
Этот код охватывает все случаи и работает одинаково.
Итак, мои вопросы:
$value = isset($text) ? $text : "";
isset
дело)isset
как дела?троичный уже самый короткий код для этого брата. Вы уже получили это.
Да, это дает тот же результат, но только если $test
содержит пустую строку Если $test
не инициализируется, генерирует ошибку, но проверяет, что является самой целью этого троичного оператора if.
Если вы хотите сделать то же самое без использования оператора if, вам все равно нужно проверить, $test
установлен, и если нет, инициализируйте его, используя пустую строку, что потребовало бы еще одного оператора if.
Подводя итог: Нет, кажется, нет лучшего способа достичь того же.
Начиная с PHP 7.0, есть нулевой оператор объединения, который сделает это короче:
// ternary
$value = isset($text) ? $text : "";
// null coalesce
$value = $text ?? "";
Ваш оператор конкатенации выдаст ошибку, если переменная не определена.