0

I want to parse the JSON array $inputjson data with a loop, with one condition: show only those products which quantity != 0

i.e in this case, my output should be like

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'
 )
 )
wscourge
11.4k17 gold badges65 silver badges87 bronze badges
asked Dec 17, 2016 at 11:18

2 Answers 2

1

Loop through json items and check for quantity. Only those different than 0 will be treated as true in if condition:

foreach( $inputjson as $item=>$value ) {
 if ( $value['quantity'] ) {
 echo $item . ', ' . $value['list'];
 }
}
Hassan Saeed
7,1601 gold badge43 silver badges38 bronze badges
answered Dec 17, 2016 at 11:33

1 Comment

thanks wscourge i was so close but this logic finish my work earlier thank for your time
1

I will complete the previous answer with a standard function: array_filter

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

http://php.net/array_filter

This function will iterate on each element, and use the callback function has filter (function return true/false). The result of this function is all elements filtered.

answered Dec 17, 2016 at 11:36

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.