Объединить массивы с перекрывающимися числовыми ключами

0

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

$array1[1] = array('service'=>array(1=>array('name'=>'Emergency','Price'=>10,'start_date'=>'2015-01-01')));
$array2[1] = array('calls'=>array('123456789'=>array('total'=>'150','Price'=>10,'cdrs'=>array(1=>array('src'=>123456789,'dist'=>987654321)))));

Они оба имеют ключ от одного, поскольку оба они принадлежат клиенту номер 1. Мне нужно получить результирующий массив, который выглядит так:

Array
    (
        [1] => Array
            (
            [service] => Array
            (
                [1] => Array
                    (
                        [name] => Emergency
                        [Price] => 10
                        [start_date] => 2015-01-01
                    )

            )

            [calls] => Array
            (
                [123456789] => Array
                    (
                        [total] => 150
                        [Price] => 10
                        [cdrs] => Array
                            (
                                [1] => Array
                                    (
                                        [src] => 123456789
                                        [dist] => 987654321
                                    )

                            )

                    )

            )

        )

)

Таким образом, я могу использовать два метода для возврата двух массивных массивов, а затем просто объединить их и пропустить.

Я пробовал как array_merge и следующее, о котором я не знал:

$merged = $array1 + $array2;

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

  • 0
    Я мог бы ответить вам, но я не очень знаком с PHP - Как бы вы хотели их снова объединить? Это простой восходящий / нисходящий порядок или что-то еще? Вообще, я бы сам реализовал функцию слияния. Это не должно быть чрезвычайно сложным.
Теги:
arrays
multidimensional-array

2 ответа

0

Я не могу проверить это прямо сейчас, но я думаю, что это должно сработать.

$newArray = [];
for($i = 0; $i < sizeof($array1);$i++){
    $newArray[] = array_merge($array1[$i],$array2[$i]);
}
return $newArray;
0

Объедините два массива с помощью функции array_merge_recursive as:

  $result[1] = array_merge_recursive($array1[1],$array2[1]);
   //You can change key as per your need may be dynamic
    print_r($result);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню