我正在尝试组合两个数组,但保持第一个数组的键。
我有这个数据:
$days = array(
1 => array("name" => "Monday"),
2 => array("name" => "Tuesday"),
3 => ...
30 => array("name" => "Sunday"),
);
和另一个点击:
$clics = array(
2 => array("clicks" => 4),
10 => array("clicks" => 2),
);
我想要的数组是:
$final = array(
1 => array("name" => "Monday"),
2 => array("name" => "Tuesday", "clicks" => 4),
3 => ...
4 =>
5 =>
...
10 => array("name" => "Tuesday", "clicks" => 2),
..
30 => array("name" => "Sunday"),
);
在第二个数组中,如果没有,则表示索引不存在。我已经尝试过array_combine,但需要有相同的键和array_merge失败。
我有什么选择?
提前感谢
看一下PHP.net上的array_merge_recursive函数。此外,请查看那里的注释,以查找其中一个函数是否提供了所需的数组(即注释#104145和注释#102379
)。另外,请注意,通过使用foreach,您最终肯定会得到所需的数组。有什么特别的原因让你不想或不能使用foreach吗?
如果没有循环,我无法做到这一点,但是有了循环,这很容易:
function merge_your_arrays ($days, $clicks) {
foreach ($days as $k => $v) {
if (isset($clicks[$k])) {
$days[$k] = array_merge($days[$k],$clicks[$k]);
}
}
return $days;
}
$final = merge_your_arrays($days, $clicks);