PHP数组填充默认值,如果为NULL。阵列相交技巧?

时间:2012-08-07 22:51:19

标签: php arrays

我有一个我的应用程序所需的值数组。如果没有提供值,我想用默认值填充它们。例如,如果我的应用需要三个值

$default_vals = array('foo','bar','baz');
$given_vals = array('faz',NULL);

我需要结果:

$combined = array('faz','bar','baz')

基本上填写缺省的数组索引。

差不多5点了,大脑都在炒。我认为这可以通过array_intersect()或merge()等array_function()轻松完成。

感谢。

编辑:顺便说一下.. $ given_vals可以包含与$ default相同的值,因此即使是这种情况,解决方案也应该有效。

1 个答案:

答案 0 :(得分:4)

您需要首先从输入中过滤NULL,然后您可以执行所谓的数组联合(数组联合运算符为+,请参阅Array operatorsDocs):< / p>

$result = array_filter($given_vals) + $default_vals;

请注意array_filterDocs将删除FALSE或空字符串等值。所以我不能100%确定是否符合您的需求。如果没有,请更具体:

$result = array_filter($given_vals, function($v) {return !is_null($v);}) 
          + $default_vals;
ksort($result);