/ / JSON फ़ाइल से foreach पाश बनाएँ - PHP, जेसन

JSON फ़ाइल से फ़ोरैच लूप बनाएं - php, json

मेरे पास एक जेसन फ़ाइल है (item.json) जो निम्न जैसा दिखता है:

{"response":{"success":1,"current_time":1446373851,"items":[
{
"Item1": {"last_updated":1446372015,"quantity":73,"value":1200},
"Item2": {"last_updated":1446372015,"quantity":40,"value":5297},
"Item3": {"last_updated":1446372015,"quantity":148,"value":2507}
}]}}

मैंने जेसन में प्रत्येक आइटम से मूल्यों के साथ तत्व बनाने के लिए लूप बनाने की कोशिश की है:

$values = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($values);

foreach ($values->items as $key => $value) {

if($value==Item1 && $value->value>1000){
<p><?php echo $value->value ; ?></p>
}
}

उपर्युक्त उदाहरण में मैं "आइटम" (आइटम 1) में पहले मान का परीक्षण कर रहा हूं। मैं इन सभी तीन वस्तुओं के लिए एक foreach होने में सक्षम होना चाहता हूं।

लेकिन ब्राउजर निम्न त्रुटि आउटपुट करता है "चेतावनी: foreach () में अमान्य तर्क दिया गया"।

मैं सही तरीके से एक फोरच कैसे बना सकता हूं जहां मैं सभी "आइटम" ऑब्जेक्ट्स (पूर्व "आइटम 1" और "आइटम 2) से मूल्य प्राप्त कर सकता हूं जो मेरे जेसन फ़ाइल प्रारूप के लिए काम करता है।

उत्तर:

जवाब के लिए 0 № 1

आपके आइटम वास्तव में "प्रतिक्रिया" ऑब्जेक्ट के भीतर हैं, और उसके बाद आपके पास एक सरणी में लिपटे आइटम वस्तुएं भी हैं। यदि आप आइटम.जेसन को संपादित करने के लिए सक्षम नहीं हैं तो आप कर सकते हैं

$values = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($values);

foreach ($values->response->items as $key => $value) {
foreach($value as $key => $value) {
if($key == "Item1" && $value->value > 1000) {
echo $value->value;
}
}
}

एक बेहतर समाधान हालांकि आइटम्स.जेसन (स्क्वायर ब्रैकेट्स) से सरणी को हटाना होगा क्योंकि यह अनावश्यक प्रतीत होता है और फिर करता है:

$values = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($values);

foreach ($values->response->items as $key => $value) {
if($key == "Item1" && $value->value > 1000) {
echo $value->value;
}
}

जवाब के लिए 0 № 2

कृपया इस तरह से प्रयास करें

foreach ($values as $key => $value) {


foreach($value->items as $k => $v){
foreach($v as $k1 => $v1){


echo ($v1->value);
}
}


}

जवाब के लिए 0 № 3

बस नीचे दिए गए कोड को आज़माएं जो आपको आपकी आवश्यकता के अनुसार सटीक आउटपुट प्रदान करने के लिए लिखा गया है।

$data = file_get_contents( $siteurl."/json/items.json");
$values = json_decode($data);

foreach ($values as $key => $value) {
foreach($value->items as $key1 => $value1){
foreach($value1 as $key2 => $value2){
if($key2=="Item1" && $value2->value>1000){
echo $value2->value;
}
}
}
}