JavaScript — объявить переменную с условием

var foo, bar;

foo = 'hello'; // first
bar = 'world'; // otherwise

var baz = foo || bar;

console.log(baz);

Интересно, каков PHP способ сделать выше? Я уже знаю о ternary оператор:

$foo = $bar = '';

$foo = 'hello'; // first
$bar = 'world'; // otherwise

$baz = $foo ? $foo : $bar;

echo $baz;

.. но я хочу оптимизировать здесь, потому что $foo в моем случае это запрос MySQL, и я считаю, что он выполняется дважды (?) при проверке, а затем при назначении. В любом случае, я хочу знать, есть ли более элегантный СУХОЙ способ сделать это.

Редактировать:

В PHP7 вы можете сделать:

$baz = $foo ?? $bar;

… но ищет что-то в PHP 5+

2

Решение

Для этого конкретного случая PHP предоставляет ?: сокращение, которое оценивает условие только один раз:

$baz = $foo ?: $bar;

Но помимо этого это функционально эквивалентно $foo ? $foo : $bar,

РЕДАКТИРОВАТЬ: $foo ?? $bar только когда $foo может быть null, Этот оператор доступен только с PHP 7. ?: однако доступен начиная с PHP 5.3. Троичный будет проверять на false (Слабо).

3

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

Других решений пока нет …

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