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查询,我相信它执行两次(?)检查,然后在分配。不管怎样,我想知道是否有一种更优雅的DRY方法来做这件事。
在PHP7中,你可以这样做:
$baz = $foo ?? $bar;
…但是在PHP 5+中寻找
对于这种特殊情况,PHP提供了?:
简写,它只计算一次条件:
$baz = $foo ?: $bar;
但除此之外,它在功能上与$foo ? $foo : $bar
相当。
编辑:$foo ?? $bar
只适用于$foo
可能是null
的情况。该操作符仅在PHP 7之后可用。然而,?:
从PHP 5.3开始可用。三元制将检查false
(松散)。