2016-12-17 3 views
0

Я хочу, чтобы разобрать массив со JSon $inputjson данных с петлей, с одним условием: показывать только те продукты, которые quantity != 0как разобрать JSON массива данных в PHP

т.е. в этом случае, мой вывод должен быть как

echo >14516 , 29 //productid, list value 
echo >14517 , 30 //productid, list value 
echo >14519 , 32 //productid, list value 

JSON:

$inputjson="{"14514":{"attributes_values":{"3":"7"},"attributes":[27],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201701017","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'27'"},"14515":{"attributes_values":{"3":"7,5"},"attributes":[28],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201702014","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'28'"},"14516":{"attributes_values":{"3":"8"},"attributes":[29],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":1,"reference":"2221201703011","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'29'"},"14517":{"attributes_values":{"3":"8,5"},"attributes":[30],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":2,"reference":"2221201704018","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'30'"},"14518":{"attributes_values":{"3":"9"},"attributes":[31],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201705015","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'31'"},"14519":{"attributes_values":{"3":"9,5"},"attributes":[32],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":1,"reference":"2221201706012","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'32'"},"14520":{"attributes_values":{"3":"10"},"attributes":[33],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201707019","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'33'"},"14521":{"attributes_values":{"3":"10,5"},"attributes":[34],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201708016","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'34'"},"14522":{"attributes_values":{"3":"11"},"attributes":[35],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201709013","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'35'"},"14523":{"attributes_values":{"3":"11,5"},"attributes":[36],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201710019","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'36'"},"14524":{"attributes_values":{"3":"12"},"attributes":[37],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201711016","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'37'"},"14525":{"attributes_values":{"3":"13"},"attributes":[39],"price":0,"specific_price":false,"ecotax":0,"weight":0,"quantity":0,"reference":"2221201712013","unit_impact":"0.00","minimal_quantity":"1","available_date":"","id_image":-1,"list":"'39'"}}"; 

$inputjson=json_decode($inputjson,true); 

$inputjson print_r output:-- 
Array 
    (
     [14514] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 7 
        ) 

       [attributes] => Array 
        (
         [0] => 27 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201701017 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '27' 
      ) 

     [14515] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 7,5 
        ) 

       [attributes] => Array 
        (
         [0] => 28 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201702014 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '28' 
      ) 

     [14516] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 8 
        ) 

       [attributes] => Array 
        (
         [0] => 29 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 1 
       [reference] => 2221201703011 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '29' 
      ) 

     [14517] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 8,5 
        ) 

       [attributes] => Array 
        (
         [0] => 30 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 2 
       [reference] => 2221201704018 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '30' 
      ) 

     [14518] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 9 
        ) 

       [attributes] => Array 
        (
         [0] => 31 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201705015 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '31' 
      ) 

     [14519] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 9,5 
        ) 

       [attributes] => Array 
        (
         [0] => 32 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 1 
       [reference] => 2221201706012 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '32' 
      ) 

     [14520] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 10 
        ) 

       [attributes] => Array 
        (
         [0] => 33 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201707019 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '33' 
      ) 

     [14521] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 10,5 
        ) 

       [attributes] => Array 
        (
         [0] => 34 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201708016 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '34' 
      ) 

     [14522] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 11 
        ) 

       [attributes] => Array 
        (
         [0] => 35 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201709013 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '35' 
      ) 

     [14523] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 11,5 
        ) 

       [attributes] => Array 
        (
         [0] => 36 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201710019 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '36' 
      ) 

     [14524] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 12 
        ) 

       [attributes] => Array 
        (
         [0] => 37 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201711016 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '37' 
      ) 

     [14525] => Array 
      (
       [attributes_values] => Array 
        (
         [3] => 13 
        ) 

       [attributes] => Array 
        (
         [0] => 39 
        ) 

       [price] => 0 
       [specific_price] => 
       [ecotax] => 0 
       [weight] => 0 
       [quantity] => 0 
       [reference] => 2221201712013 
       [unit_impact] => 0.00 
       [minimal_quantity] => 1 
       [available_date] => 
       [id_image] => -1 
       [list] => '39' 
      ) 

    ) 

ответ

1

Перебор элементов JSon и проверить quantity. Только те, отличается 0 будут рассматриваться как true в if состоянии:

foreach($inputjson as $item=>$value) { 
    if ($value['quantity']) { 
    echo $item . ', ' . $value['list']; 
    } 
} 
+2

спасибо wscourge, я был так близко, но эта логика закончила мою работу раньше, спасибо за ваше время –

0

Я завершу предыдущий ответ со стандартной функцией: array_filter

<?php 

$result = array_filter($inputJson, function($item) { 
    return !empty($item['quantity']); 
}); 

?> 

http://php.net/array_filter

Этот функция будет выполнять итерацию по каждому элементу и использовать обратный вызов функция имеет фильтр (функция возвращает true/false). Результатом этой функции являются все элементы, отфильтрованные.

Смежные вопросы