鉴于这些变量:
$bar = false;
$baz = false;
$boo = "hi there";
$jelek = false;
当我像这样链接or
时:
$foo = $bar or
$foo = $baz or
$foo = $boo or
$foo = $jelek;
echo $foo;
返回hi there
!那么,这是or
的正确用法吗?因为如果是这样,它很性感。
答案 0 :(得分:2)
不幸的是,你不能用PHP做什么,比如,JavaScript:
var $foo = $bar || $baz || $boo;
然而,您可以使用的是chained ternary operators:
$foo = $bar ? $bar : (
$baz ? $baz : (
$boo ? $boo : (
NULL)));
这不是很好,因为重复的变量名称,但它链好的。
$foo = $a ? $a : (
$b ? $b : (
$c ? $c : (
$d ? $d : (
$e ? $e : (
$f ? $f : (
NULL))))));
或者,只需stuff them all inside a list and loop over it,即可找到第一个真值。
$foo = NULL;
foreach (array($bar, $baz, $boo) as $val) {
if ($val) {
$foo = $val;
break;
}
}
此选项是IMO,迄今为止最具可读性,可维护性且易于理解。
答案 1 :(得分:1)
您不能以这种方式使用or
,因为or
只会返回一个布尔值。你可以用嵌套的三元运算符来做这件事,这会很酷,但我很难说它更干净。我认为没有比你列出的第一种方法更好的方法了。
答案 2 :(得分:1)
您无法以您想要的方式使用or
。但你可以这样做:
$foo = $bar ? $bar : (!$baz ? $boo : $baz);