как создать тернарное выражение php, содержащее только оператор if

#php #ternary

#php #тернарный

Вопрос:

Как я могу создать тернарное выражение php, содержащее только оператор if без части else? Это то, что я пробовал :

 $vn = condition ? expression1 ;
  

И это то, чего я пытаюсь достичь

 if(condition) {
    $vn = expression1;
}
  

Для

 $vn = condition ? expression1 ;
  

Ответ №1:

Вы могли бы использовать ту же переменную в else части:

 $vn = condition ? expression1 : $vn ;
  

Обратите внимание, что это создает уведомление, если $vn оно не использовалось ранее.

Комментарии:

1. Вы могли бы использовать @$vn в else части, чтобы предотвратить уведомление.

2. @Barmar да. Но на самом деле вы должны $vn сначала инициализировать. Подавление уведомлений, предупреждений и ошибок никогда не является хорошей идеей.

Ответ №2:

Если вы используете PHP 7, вы можете рассмотреть Null Coalescing Operator .

В некоторых случаях синтаксис аналогичен тому, что вы, похоже, ищете:

 $email = $_POST['email'] ?? 'none';

// is the same as:
$email = isset($_POST['email']) ? $_POST['email'] : 'none';
  

Ответ №3:

 (condition) AND ($vn = expression1);
  

тоже работает.

И только как информация:

 $v = condition?:expression1
  

также возможно, здесь condition (в случае) анализируется на $v