我有一个我的应用程序所需的值数组。如果没有提供值,我想用默认值填充它们。例如,如果我的应用需要三个值
$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相同的值,因此即使是这种情况,解决方案也应该有效。
答案 0 :(得分:4)
您需要首先从输入中过滤NULL
,然后您可以执行所谓的数组联合(数组联合运算符为+
,请参阅Array operatorsDocs):< / p>
$result = array_filter($given_vals) + $default_vals;
请注意array_filter
Docs将删除FALSE
或空字符串等值。所以我不能100%确定是否符合您的需求。如果没有,请更具体:
$result = array_filter($given_vals, function($v) {return !is_null($v);})
+ $default_vals;
ksort($result);