Как я могу объединить 2 ассоциативных массива с разными ключами и как получить результирующий массив во входных данных для приведения в порядок в PHP?

#php #arrays #associative-array #array-merge

Вопрос:

У меня есть 2 массива, таких как:

 $arr1 =  [230] => Array
        (
            [itemid] => 230
            [name] => test1
            [category] => toy
            [price] => 10.00
        )

    [240] => Array
        (
            [itemid] => 240
            [name] => test2
            [category] => toy
            [price] => 8.00
        )
     [245] => Array
        (
            [itemid] => 245
            [name] => test3
            [category] => pen
            [price] => 5.00
        )
)
$arr2 =  [220] => Array
        (
            [itemid] => 220
            [name] => test4
            [category] => toy
            [price] => 20.00
        )

    [225] => Array
        (
            [itemid] => 225
            [name] => test5
            [category] => battery
            [price] => 4.00
        )
     [248] => Array
        (
            [itemid] => 248
            [name] => test6
            [category] => book
            [price] => 3.00
        )
     [236] => Array
        (
            [itemid] => 236
            [name] => test7
            [category] => pen
            [price] => 2.00
        )
)
 

Мне нужен такой результат, как :

 $arr3 =  [230] => Array
        (
            [itemid] => 230
            [name] => test1
            [category] => toy
            [price] => 10.00
        )

    [240] => Array
        (
            [itemid] => 240
            [name] => test2
            [category] => toy
            [price] => 8.00
        )
     [245] => Array
        (
            [itemid] => 245
            [name] => test3
            [category] => pen
            [price] => 5.00
        )

  [220] => Array
        (
            [itemid] => 220
            [name] => test4
            [category] => toy
            [price] => 20.00
        )

    [225] => Array
        (
            [itemid] => 225
            [name] => test5
            [category] => battery
            [price] => 4.00
        )
     [248] => Array
        (
            [itemid] => 248
            [name] => test6
            [category] => book
            [price] => 3.00
        )
     [236] => Array
        (
            [itemid] => 236
            [name] => test7
            [category] => pen
            [price] => 2.00
        )
)
 

Для этого я просто использую array_merge

  $arr3= $arr1  $arr2;
 

Но после этого я получил такой результат, как:

 $arr3 =  [230] => Array
        (
            [itemid] => 230
            [name] => test1
            [category] => toy
            [price] => 10.00
        )

    [240] => Array
        (
            [itemid] => 240
            [name] => test2
            [category] => toy
            [price] => 8.00
        )
     

  [220] => Array
        (
            [itemid] => 220
            [name] => test4
            [category] => toy
            [price] => 20.00
        )

    [225] => Array
        (
            [itemid] => 225
            [name] => test5
            [category] => battery
            [price] => 4.00
        )
     [248] => Array
        (
            [itemid] => 248
            [name] => test6
            [category] => book
            [price] => 3.00
        )
       [245] => Array
        (
            [itemid] => 245
            [name] => test3
            [category] => pen
            [price] => 5.00
        )
     [236] => Array
        (
            [itemid] => 236
            [name] => test7
            [category] => pen
            [price] => 2.00
        )
)
 

Моя проблема заключается в том, что после объединения 2 ассоциативных массивов с разными ключами я смешал первый массив и второй массив, что означает, что мне нужен результат, подобный первым трем элементам массива первого массива, а затем 4 элементам массива второго массива.
Кто-нибудь может мне помочь, пожалуйста, это будет полезно для меня

Комментарии:

1. Я не совсем понимаю, о чем вы спрашиваете. Вам нужен отсортированный массив в конце? если это так: asort($arr3); должно сработать.

2. php.net/manual/en/function. array-merge.php

3. Просто повторите цикл $arr2 и добавьте ключи плюс значения, чтобы $arr1 , по-видимому, достичь того, чего вы хотите? Это должно поддерживать порядок массивов.

4. Нет. Мне не нужен никакой отсортированный массив. Просто я хочу, чтобы массив был задан в порядке ввода массива.

Ответ №1:

Вы могли бы использовать:

 foreach($arr2 as $key => $record) {
    $arr1[$key] = $record;
}
 

Это приведет к порядку, который вы ищете.

ДЕМОНСТРАЦИЯ