Не получается поместить элементы в массив php
Есть массив $items, его содержимое:
[
{"product_id":105756483,"offer_id":"A2274","stock":{
"coming":0,"present":0,"reserved":0
}},
{"product_id":105757609,"offer_id":"A2275","stock":{
"coming":0,"present":0,"reserved":0
}},
{"product_id":105759812,"offer_id":"A1143","stock":{
"coming":0,"present":0,"reserved":0
}},
{"product_id":105761607,"offer_id":"A2585","stock":{
"coming":0,"present":0,"reserved":0
}},
{"product_id":105763167,"offer_id":"A2588","stock":{
"coming":0,"present":0,"reserved":0
}}
]
Перебираю его с помощью foreach:
$stocks = [];
foreach ($items as $k => $v) {
$stocks = [
'offer_id' => $v['offer_id'],
'product_id' => $v['product_id'],
'stock' => $v['stock']['present'],
'warehouse_id' => '22222222222222',
];
$array = json_encode($stocks);
print_r($array);
}
В результате получаю json такого вида:
{"offer_id":"A2274","product_id":105756483,"stock":0,"warehouse_id":"22222222222222"}
{"offer_id":"A2275","product_id":105757609,"stock":0,"warehouse_id":"22222222222222"}
{"offer_id":"A1143","product_id":105759812,"stock":0,"warehouse_id":"22222222222222"}
{"offer_id":"A2585","product_id":105761607,"stock":0,"warehouse_id":"22222222222222"}
{"offer_id":"A2588","product_id":105763167,"stock":0,"warehouse_id":"22222222222222"}
А нужно получить json вот в таком виде:
{
"stocks":[
{"offer_id":"A2274","product_id":105756483,"stock":0,"warehouse_id":"22222222222222"},
{"offer_id":"A2275","product_id":105757609,"stock":0,"warehouse_id":"22222222222222"},
{"offer_id":"A1143","product_id":105759812,"stock":0,"warehouse_id":"22222222222222"},
{"offer_id":"A2585","product_id":105761607,"stock":0,"warehouse_id":"22222222222222"},
{"offer_id":"A2588","product_id":105763167,"stock":0,"warehouse_id":"22222222222222"}
]
}
Не получается. Что делаю не так?
Ответы (1 шт):
Автор решения: Anton Shchyrov
→ Ссылка
$stocks = [
'stocks' => [] // В массиве $stocks создаем один элемент
];
foreach ($items as $k => $v) {
$stocks['stocks'][] = [ // добавляем в него новые значения
'offer_id' => $v['offer_id'],
'product_id' => $v['product_id'],
'stock' => $v['stock']['present'],
'warehouse_id' => '22222222222222',
];
}
$array = json_encode($stocks);
print_r($array);