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

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

$vn = condition ? expression1 ;

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

if(condition) {
    $vn = expression1;
}

to

$vn = condition ? expression1 ;

person Ewomazino Ukah    schedule 12.10.2016    source источник


Ответы (3)


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

$vn = condition ? expression1 : $vn ;

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

person Bart Friederichs    schedule 12.10.2016
comment
Вы можете использовать @$vn в части else, чтобы предотвратить уведомление. - person Barmar; 12.10.2016
comment
@ Бармар, да. Но на самом деле вы должны сначала инициализировать $vn. Подавление уведомлений, предупреждений и ошибок никогда не было хорошей идеей. - person Bart Friederichs; 12.10.2016

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

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

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

// is the same as:
$email = isset($_POST['email']) ? $_POST['email'] : 'none';
person The One and Only ChemistryBlob    schedule 12.10.2016

(condition) AND ($vn = expression1);

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

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

$v = condition?:expression1

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

person JOUM    schedule 12.10.2016