PHP 分配第一个非空值

2022-08-30 18:54:16

我有三个这样的值:

$a = null
$b = 3;
$c = null

(我永远不知道会是什么:也许是全部,也许没有。null

在所谓的延迟加载之后,我尝试以这种方式分配第一个非空值:

$d = $a or $b or $c;

(它类似于JavaScript的方式(如果没有a,它将分配b)。var d = a || b;

但是在PHP中它似乎不起作用。

是我做错了,还是最好和最简单的方法是什么?


答案 1

您可以在 PHP 5.3+ 中使用短三元运算符:

$d = $a ?: $b ?: $c;

请注意,这确实像在JS中一样键入强制。


更新 (PHP 7)

在 PHP 7.0+ 中,您会这样做(称为 - 更多信息):null coalescing

$d = $a ?? $b ?? $c;

答案 2

试试这个...

$d = array_filter(array($a, $b, $c))[0]; //newer PHP only

或者这个:

$d = current(array_filter(array($a, $b, $c))); //warning about references

或者这个:

$tmp = array_filter(array($a, $b, $c));
$d = current($tmp); //most safe

推荐