我正在尝试组合两个数组但是保留第一个数组的键。
我有这些数据:
$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没有。
我有什么选择?
提前谢谢
答案 0 :(得分:3)
查看PHP.net上的array_merge_recursive函数。另外,请查看那里的注释,以查找其中一个函数是否提供了所需的数组(I.E. comment #104145和comment #102379
另外,请注意,使用foreach,您最终肯定会拥有所需的数组。你有什么特别的理由不想或不能使用foreach吗?
答案 1 :(得分:2)
在循环中我看不到任何方法可以做到这一点,但是使用循环很容易:
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);