声明变量的条件

问题描述:

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(松散地)。

+0

超级!谢谢。它等价于PHP7''''吗? – 3zzy

+2

@ 3zzy看到我的编辑。 '$ foo = false; $ baz = $ foo ?? “ALT”; $ qux = $ foo?:“alt”;'是不同的。但对于真值,它是一样的。 – bwoebi

+0

啊哈,很高兴知道。谢谢!虽然我在PHP7上,但我希望代码向后兼容。 – 3zzy