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 +中找东西
答案 0 :(得分:3)
对于这种特定情况,PHP提供了?:
简写,它只评估一次条件:
$baz = $foo ?: $bar;
但除此之外,它在功能上等同于$foo ? $foo : $bar
。
编辑:$foo ?? $bar
仅适用于$foo
可能为null
的情况。该运算符仅在PHP 7之后可用。?:
但是自PHP 5.3起可用。三元将检查false
(松散地)。