可能重复:
PHP 的合并函数?
我不确定这通常被称为什么,但我希望标题能够很好地传达信息。我所拥有的是一些变量,其中一些可能为空。
我想要做:
$a = $b || $c || $d;
$a 最终成为第一个非空变量的 = 。
可能重复:
PHP 的合并函数?
我不确定这通常被称为什么,但我希望标题能够很好地传达信息。我所拥有的是一些变量,其中一些可能为空。
我想要做:
$a = $b || $c || $d;
$a 最终成为第一个非空变量的 = 。
据我所知,PHP 不像 JavaScript 那样支持这一点。
但是,您可以执行以下操作:
$a = $b ? $b : ($c ? $c : $d);
更通用的解决方案:
function fallthrough($arr) {
//$arr should be an array of possible values. The first non-null value is returned
do $a = array_shift($arr);
while($a === null && $arr);
return $a;
}
<?php
$a = 0;
$b = false;
$c = true; //should become this
$d = '1';
$e = $a ?: $b ?: $c ?: $d;
var_dump($e);
//bool(true)
//should be '1' if order is different
$e = $a ?: $b ?: $d ?: $c;
var_dump($e);
//string(1) "1"
...但是?:
有点新,您会混淆您的同事/其他编码人员。
我不认为这是可能的。我认为您必须使用其他更费力的方法。即创建一个变量数组,遍历它,直到找到一个非空值并中断循环,如下所示:
$vars = array("b" => $b, "c" => $c, "d" => $d);
foreach($vars as $var) {
if($var != null) {
$a = $var;
break;
}
}
好吧,就像这里的其他一些答案所说的那样,您可以使用速记方式来编写它,但是编写可读的代码也很重要。上面的代码可读性很好。