Не получается поместить элементы в массив 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 не будет опубликован. Обязательные поля помечены *