PHP объединяет два массива в один - PullRequest
0 голосов
/ 18 февраля 2010

У меня есть два массива, которые нужно объединить и попытаться найти правильный способ сделать это.

это первый массив

Array
    (
        [IndividualOutmsg] => Array
            (
                [0] => Array
                    (
                        [user_id] => 3
                        [number] => 414566765
                        [msg] => some message
                    )

                [1] => Array
                    (
                        [user_id] => 3
                        [number] => 410335509
                        [msg] => any message
                    )

            )

    )

это второй массив:

Array
    (
        [0] => Array
            (
                [0] => OK
                [1] => 0
                [2] => d142b46128b869d0
                [3] => 6178977058476937
            )

        [1] => Array
            (
                [0] => OK
                [1] => 0
                [2] => 60f403f4e243e684
                [3] => 6198708709873543
            )
    )

что я хочу получить это:

Array
(
    [IndividualOutmsg] => Array
        (
            [0] => Array
                (
                    [user_id] => 3
                    [number] => 414566765
                    [msg] => some message
                    [sms_status] => OK
                    [error_code] => 0
                    [msg_id] => d142b46128b869d0
                    [msg_id_2] => 6178977058476937

                )

            [1] => Array
                (
                    [user_id] => 3
                    [number] => 410335509
                    [msg] => any message
                    [sms_status] => OK
                    [error_code] => 0
                    [msg_id] => 60f403f4e243e684
                    [msg_id_2] => 6198708709873543

                )

        )

)

Ответы [ 2 ]

1 голос
/ 18 февраля 2010

В этом формате вы действительно должны выполнить большую часть работы самостоятельно и не можете просто использовать array_merge для объединения массивов. Это должна быть более индивидуальная работа, например:

$count = count($second_array);
for($i=0; $i<$count; $i++){
   $first_array['IndividualOutmsg'][$i]['sms_status'] = $second_array[0];
   $first_array['IndividualOutmsg'][$i]['error_code'] = $second_array[1];
   $first_array['IndividualOutmsg'][$i]['msg_id'] = $second_array[2];
   $first_array['IndividualOutmsg'][$i]['msg_id2'] = $second_array[3];
}

Если бы вы выводили второй массив с установленными ассоциативными ключами, было бы намного проще объединить их с помощью array_merge, если ключи не конфликтуют.

$count = count($second_array);
for($i=0; $i<$count; $i++){
   $first_array['IndividualOutmsg'][$i] = 
            array_merge($first_array['IndividualOutmsg'][$i], $second_array[$i]);
}
0 голосов
/ 18 февраля 2010

http://au.php.net/manual/en/function.array-merge.php

Слияние массивов может быть тем, что вы ищете ...

Хотя вам, вероятно, потребуется написать цикл или функцию, которая может попасть в нужное место в вашем многомерном массиве, выполнить объединение, а также изменить соответствующие ключи.

...