1

给定这些变量:

$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吗?因为如果是这样,那就太性感了。

4

3 回答 3

2

不幸的是,你不能在 PHP 中做你可以在 JavaScript 中做的事情:

var $foo = $bar || $baz || $boo;

但是,您可以使用链式三元运算符

$foo = $bar ? $bar : (
       $baz ? $baz : (
       $boo ? $boo : (
       NULL)));

这不是很好,因为重复的变量名称,但它可以链接。

$foo = $a ? $a : (
       $b ? $b : (
       $c ? $c : (
       $d ? $d : (
       $e ? $e : (
       $f ? $f : (
       NULL))))));

或者,只需将它们全部填充到列表中并循环遍历它,获取找到的第一个真实值。

$foo = NULL;
foreach (array($bar, $baz, $boo) as $val) {
    if ($val) {
        $foo = $val;
        break;
    }
}

这个选项,IMO,是迄今为止最易读、最容易维护和最容易理解的。

于 2012-07-14T04:54:07.833 回答
1

您不能or以这种方式使用,因为or只会返回一个布尔值。你可以用嵌套的三元运算符来做这件事,这很酷,但我很难称它为更清洁。我认为没有比您列出的第一种方法更好的方法了。

于 2012-07-14T04:53:47.167 回答
1

你不能使用or你想要的方式。但你可以这样做:

$foo = $bar ? $bar : (!$baz ? $boo : $baz);
于 2012-07-14T04:56:03.673 回答