PHP 分配第一个非空值
我有三个这样的值:
$a = null
$b = 3;
$c = null
(我永远不知道会是什么:也许是全部,也许没有。null
在所谓的延迟加载之后,我尝试以这种方式分配第一个非空值:
$d = $a or $b or $c;
(它类似于JavaScript的方式(如果没有a,它将分配b)。var d = a || b;
但是在PHP中它似乎不起作用。
是我做错了,还是最好和最简单的方法是什么?
我有三个这样的值:
$a = null
$b = 3;
$c = null
(我永远不知道会是什么:也许是全部,也许没有。null
在所谓的延迟加载之后,我尝试以这种方式分配第一个非空值:
$d = $a or $b or $c;
(它类似于JavaScript的方式(如果没有a,它将分配b)。var d = a || b;
但是在PHP中它似乎不起作用。
是我做错了,还是最好和最简单的方法是什么?
您可以在 PHP 5.3+ 中使用短三元运算符:
$d = $a ?: $b ?: $c;
请注意,这确实像在JS中一样键入强制。
更新 (PHP 7)
在 PHP 7.0+ 中,您会这样做(称为 - 更多信息):null coalescing
$d = $a ?? $b ?? $c;
试试这个...
$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