Не получается поместить элементы в массив php

johjessica7

Есть массив $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″}]}

Не получается. Что делаю не так?

 

mkramer

Ну так добавьте ещё один уровень этот

PHP:
  1. $array = json_encode([«stocks» => $stocks]);
 

johjessica7

Тогда получается такое:

Код (Text):
  1. {«stocks»:{«offer_id»:»A2274″,»product_id»:105756483,»stock»:0,»warehouse_id»:»22222222222222″}}{«stocks»:{«offer_id»:»A2275″,»product_id»:105757609,»stock»:0,»warehouse_id»:»22222222222222″}}{«stocks»:{«offer_id»:»A1143″,»product_id»:105759812,»stock»:0,»warehouse_id»:»22222222222222″}}{«stocks»:{«offer_id»:»A2585″,»product_id»:105761607,»stock»:0,»warehouse_id»:»22222222222222″}}{«stocks»:{«offer_id»:»A2588″,»product_id»:105763167,»stock»:0,»warehouse_id»:»22222222222222″}}

Много stocks, а мне нужен один

 

Drunkenmunky

Вот здесь

Код (Text):
  1. foreach ($items as $k => $v) {
  2.  
  3. $stocks = [
  4. ‘offer_id’ => $v[‘offer_id’],
  5. ‘product_id’ => $v[‘product_id’],
  6. ‘stock’ => $v[‘stock’][‘present’],
  7. ‘warehouse_id’ => ‘22222222222222’,
  8.  
  9. ];

$v, для начала, нужно декодировать из json

 

mkramer

А, ну так сделайте правильно цикл

PHP:
  1. $stocks = [];
  2. foreach ($items as $k => $v) {
  3.  
  4.    $stocks[] = [
  5.      ‘offer_id’ => $v[‘offer_id’],
  6.      ‘product_id’ => $v[‘product_id’],
  7.      ‘stock’ => $v[‘stock’][‘present’],
  8.      ‘warehouse_id’ => ‘22222222222222’,
  9.  
  10.    ];
  11. }
  12. $array = json_encode([«stocks» => $stocks]);
  13. echo $array;
 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *