Слияние массива в PHP
Имеется следующий код:
foreach( $order_items as $item_id => $item ){
$item_data = $item->get_data();
$data = array('Name' => $item_data['name'], 'Count' => $item_data['quantity'], 'Sum' => $item_data['total']);
// Получаем весь товар в формате массива
$tovari[] = $data;
}
//Если выбрана платная доставка, то включить в массив Goods (вместе с товарами - как товар)
$shipp = array('Name' => $order->get_shipping_method(), 'Count' => 1, 'Sum' => $order->order_shipping);
//Сливаем обе массива в одно целое
$massiv = array_merge($tovari, $shipp);
//Отправляем curl запрос (формате json - Application json)
$curlpost = array('Sign' => $matoken, 'Details' => [array('Sum' => $sum2, 'Product' => $massiv)]);
Проблема в заключается в том что после слияния обоих массивов получается следующий json запрос:
{"Sign":"318a3abba8916830a8db87f4ab","Details":[{"Sum":"350.00","ReceiptId":22,"Goods":{"0":{"Name":"Samsung","Count":1,"Sum":"200.00"},"1":{"Name":"Honor","Count":2,"Sum":"100.00"},"Name":"Доставка курьером","Count":1,"Sum":"50.00"}}]}
Правильная структура после слияния должна быть следующая:
{"Sign":"318a3abba8916830a8db87f4ab","Details":[{"Sum":"350.00","ReceiptId":22,"Goods":[{"Name":"Samsung","Count":1,"Sum":"200.00"},{"Name":"Honor","Count":2,"Sum":"100.00"},{"Name":"Доставка курьером","Count":1,"Sum":"50.00"}]}]}
Прошу Вас помочь решить данную проблему;
Ответы (1 шт):
Автор решения: Serghei Leonenco
→ Ссылка
Вам следует использовать array_push() функцию в вашем случае:
Образец:
$array_main = array(
0 => array(
"Name" => "product1"
)
);
$need_to_add = array(
"Name" => "Product2"
);
array_push($array_main, $need_to_add);
var_dump($array_main);
Результат:
array (size=2)
0 =>
array (size=1)
'Name' => string 'product1' (length=8)
1 =>
array (size=1)
'Name' => string 'Product2' (length=8)
В вашем случае вот так:
//Сливаем обе массива в одно целое
array_push($tovari, $shipp);
//Отправляем curl запрос (формате json - Application json)
$curlpost = array('Sign' => $matoken, 'Details' => [array('Sum' => $sum2, 'Product' => $tovari)]);
Надеюсь поможет.