Альтернатива для сокращения, если еще

Я видел много людей, привыкших делать это в своем коде:

$value = isset($text) ? $text : "";

Этот код по существу означает множество $value в $number(если он установлен) еще установить $value в ""

Я немного поэкспериментировал и придумал более чистый синтаксис:

$value = "".$text;

Кроме когда $text является undefinedЭтот код охватывает все случаи и работает одинаково.

Итак, мои вопросы:

  1. Есть ли лучший, более короткий и чистый способ сделать $value = isset($text) ? $text : "";
  2. Я ошибаюсь, полагая, что мой подход работает так же? (Кроме isset дело)
  3. Можно ли изменить мой подход для решения isset как дела?

2

Решение

троичный уже самый короткий код для этого брата. Вы уже получили это.

1

Другие решения

Да, это дает тот же результат, но только если $test содержит пустую строку Если $test не инициализируется, генерирует ошибку, но проверяет, что является самой целью этого троичного оператора if.

Если вы хотите сделать то же самое без использования оператора if, вам все равно нужно проверить, $test установлен, и если нет, инициализируйте его, используя пустую строку, что потребовало бы еще одного оператора if.

Подводя итог: Нет, кажется, нет лучшего способа достичь того же.

1

Начиная с PHP 7.0, есть нулевой оператор объединения, который сделает это короче:

// ternary
$value = isset($text) ? $text : "";

// null coalesce
$value = $text ?? "";

Ваш оператор конкатенации выдаст ошибку, если переменная не определена.

0
По вопросам рекламы [email protected]