按键合并两个数组但在PHP中维护第一个数组,数组合并失败

时间:2011-09-30 10:34:13

标签: php arrays multidimensional-array

我正在尝试组合两个数组但是保留第一个数组的键。

我有这些数据:

$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没有。

我有什么选择?

提前谢谢

2 个答案:

答案 0 :(得分:3)

查看PHP.net上的array_merge_recursive函数。另外,请查看那里的注释,以查找其中一个函数是否提供了所需的数组(I.E. comment #104145comment #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);