给定这些变量:
$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
吗?因为如果是这样,那就太性感了。
给定这些变量:
$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
吗?因为如果是这样,那就太性感了。
不幸的是,你不能在 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,是迄今为止最易读、最容易维护和最容易理解的。
您不能or
以这种方式使用,因为or
只会返回一个布尔值。你可以用嵌套的三元运算符来做这件事,这很酷,但我很难称它为更清洁。我认为没有比您列出的第一种方法更好的方法了。
你不能使用or
你想要的方式。但你可以这样做:
$foo = $bar ? $bar : (!$baz ? $boo : $baz);