按键合并两个数组,但保留第一个数组的键,在PHP中,array_combine失败



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

我有这个数据:

$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);

相关内容

  • 没有找到相关文章

最新更新