Проблема array_merge в php - PullRequest
0 голосов
/ 08 мая 2020

У меня проблемы при работе с массивами с помощью функции array_merge. Вот пример:

$first_array = [
    8 => [
        'name' => "Hershey's Chocolate Milk Shake",
        'code' => 8 ,
        'price' => 29.00,
        'quantity' => 1,
        'image' => "Hersheys_Chocolate_Milk_Shake.jpg",
        'percentage_discount' => 0,
        'offer_mrp' => 0,
    ]
];
$second_array = [
    20 => [
        'name' => 'Kissan Mixed Fruit Jam 700g',
        'code' => 20,
        'price' => 215.00,
        'quantity' => 1,
        'image' => 'Kissan Mixed Fruit Jam 700g.jpg',
        'percentage_discount' => 0,
        'offer_mrp' => 0 
    ]
];

$first_array = array_merge($first_array, $second_array); 
print_r($first_array);

Результат:

Array ( 
    [0] => Array ( 
        [name] => Hershey's Chocolate Milk Shake 
        [code] => 8 
        [price] => 29.00 
        [quantity] => 1 
        [image] => Hersheys_Chocolate_Milk_Shake.jpg 
        [percentage_discount] => 0 
        [offer_mrp] => 0
    ) 
    [1] => Array ( 
        [name] => Kissan Mixed Fruit Jam 700g 
        [code] => 20 
        [price] => 215.00 
        [quantity] => 1 
        [image] => Kissan Mixed Fruit Jam 700g.jpg 
        [percentage_discount] => 0 [offer_mrp] => 0 
    ) 
);

Но я хочу, чтобы это было:

Array ( 
    [8] => Array ( 
        [name] => Hershey's Chocolate Milk Shake 
        [code] => 8 
        [price] => 29.00 
        [quantity] => 1 
        [image] => Hersheys_Chocolate_Milk_Shake.jpg 
        [percentage_discount] => 0 
        [offer_mrp] => 0
    ) 
    [20] => Array ( 
        [name] => Kissan Mixed Fruit Jam 700g 
        [code] => 20 
        [price] => 215.00 
        [quantity] => 1 
        [image] => Kissan Mixed Fruit Jam 700g.jpg 
        [percentage_discount] => 0 [offer_mrp] => 0 
    )
)

1 Ответ

1 голос
/ 08 мая 2020

array_merge() перенумеровывает числовые c ключи. Вместо этого вы должны использовать оператор +.

$first_array = $first_array + $second_array;

Результат точно такой же, как вы хотите.

...