我可以链接这样的“或”语句吗?

时间:2012-07-14 04:47:49

标签: php

鉴于这些变量:

$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的正确用法吗?因为如果是这样,它很性感。

3 个答案:

答案 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);