Объединить два массива по ключу, но сохранить ключ первого в PHP, array_combine завершится неудачно - PullRequest
2 голосов
/ 30 сентября 2011

Я пытаюсь объединить два массива, но веду ключ первого.

У меня есть эти данные:

$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 ]

3 голосов
/ 30 сентября 2011

Посмотрите на функцию array_merge_recursive на PHP.net. Кроме того, проверьте комментарии там, чтобы узнать, предоставляет ли одна из этих функций нужный массив (например, комментарий # 104145 и комментарий # 102379

Кроме того, обратите внимание, что при использовании foreach вы обязательно получите нужный массив. Есть ли какие-то конкретные причины, по которым вы не хотите или не можете использовать foreach?

2 голосов
/ 30 сентября 2011

Я не вижу способа сделать это без цикла, но с циклом это легко:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...