2013-03-25 5 views
13
का उपयोग कर JSON सारणी लूप करने के लिए

मेरे PHP कोड:कैसे पीएचपी

$obj = json_decode($data); 
print $obj->{'name'}; 

हालांकि यह गैर सरणियों के लिए काम करता है, मुझे नहीं मेरे जीवन के लिए यह पता लगाने कर सकते हैं के भीतर सभी मूल्यों मुद्रित करने के लिए कैसे " समीक्षा "ऐरे।

मैं इस प्रतिक्रिया के माध्यम से लूप करना चाहता हूं, शायद फोरेच() के साथ, जिसके परिणामस्वरूप प्रतिक्रिया में प्रत्येक समीक्षा के लिए रेटिंग और अंश शामिल है।

किसी भी मार्गदर्शन/दिशा बहुत सराहना है ..

नीचे JSON के साथ मैं काम कर रहा हूँ है। (यह येलपी एपीआई से प्रतिक्रिया है)।

{ 
    "is_claimed": true, 
    "rating": 4.5, 
    "mobile_url": "http://m.yelp.com/biz/economy-paint-and-collision-riverside", 
    "rating_img_url": "http://s3-media2.ak.yelpcdn.com/assets/2/www/img/99493c12711e/ico/stars/v1/stars_4_half.png", 
    "review_count": 19, 
    "name": "Economy Paint & Collision", 
    "snippet_image_url": "http://s3-media3.ak.yelpcdn.com/photo/ZOzoahw0Go_DEPLvxCaP_Q/ms.jpg", 
    "rating_img_url_small": "http://s3-media2.ak.yelpcdn.com/assets/2/www/img/a5221e66bc70/ico/stars/v1/stars_small_4_half.png", 
    "url": "http://www.yelp.com/biz/economy-paint-and-collision-riverside", 
    "reviews": [ 
     { 
      "rating": 3, 
      "excerpt": "The Good:\nDennis quoted me a price over the phone about 1 month before I took my wifes 2010 Escalade in for repairs and when I took it in he gave me the...", 
      "time_created": 1357010247, 
      "rating_image_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/34bc8086841c/ico/stars/v1/stars_3.png", 
      "rating_image_small_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/902abeed0983/ico/stars/v1/stars_small_3.png", 
      "user": { 
       "image_url": "http://s3-media3.ak.yelpcdn.com/photo/mIsU7ugYd88lLA-XL2q1Cg/ms.jpg", 
       "id": "V9MDZvEBv-tBTF4YIoc7mg", 
       "name": "Sydney H." 
      }, 
      "rating_image_large_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/e8b5b79d37ed/ico/stars/v1/stars_large_3.png", 
      "id": "HfOhzLIlJoUKSKU8euclqA" 
     }, 
     { 
      "rating": 5, 
      "excerpt": "Dennis and his team did an amazing job on the roof of my fiancee's 2002 Acura RSX after years of living by the beach in San Francisco had mostly rusted...", 
      "time_created": 1354741952, 
      "rating_image_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/f1def11e4e79/ico/stars/v1/stars_5.png", 
      "rating_image_small_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/c7623205d5cd/ico/stars/v1/stars_small_5.png", 
      "user": { 
       "image_url": "http://s3-media3.ak.yelpcdn.com/photo/ZOzoahw0Go_DEPLvxCaP_Q/ms.jpg", 
       "id": "kOqCnCjYn0EbAhtH1tfjcw", 
       "name": "Jason H." 
      }, 
      "rating_image_large_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/22affc4e6c38/ico/stars/v1/stars_large_5.png", 
      "id": "YzZg1LX6zeRaurq9tYUcMw" 
     }, 
     { 
      "rating": 5, 
      "excerpt": "It's been a year since I had my car painted here, and I gotta say: It still looks just as good as it did when I first picked it up. You would never know...", 
      "time_created": 1361043626, 
      "rating_image_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/f1def11e4e79/ico/stars/v1/stars_5.png", 
      "rating_image_small_url": "http://s3-media1.ak.yelpcdn.com/assets/2/www/img/c7623205d5cd/ico/stars/v1/stars_small_5.png", 
      "user": { 
       "image_url": "http://s3-media1.ak.yelpcdn.com/photo/58coTtu1x5riHSgFEAQsfw/ms.jpg", 
       "id": "kVrW3138d5VL-AZ97wFF4A", 
       "name": "Jeanne M." 
      }, 
      "rating_image_large_url": "http://s3-media3.ak.yelpcdn.com/assets/2/www/img/22affc4e6c38/ico/stars/v1/stars_large_5.png", 
      "id": "r5WtlQVMXiIMBR6S3N7RZw" 
     } 
    ], 
    "phone": "9517870227", 
    "snippet_text": "Dennis and his team did an amazing job on the roof of my fiancee's 2002 Acura RSX after years of living by the beach in San Francisco had mostly rusted...", 
    "image_url": "http://s3-media3.ak.yelpcdn.com/bphoto/kodoEcmgHRG61pPaWRndbw/ms.jpg", 
    "categories": [ 
     [ 
      "Body Shops", 
      "bodyshops" 
     ], 
     [ 
      "Auto Repair", 
      "autorepair" 
     ] 
    ], 
    "display_phone": "+1-951-787-0227", 
    "rating_img_url_large": "http://s3-media4.ak.yelpcdn.com/assets/2/www/img/9f83790ff7f6/ico/stars/v1/stars_large_4_half.png", 
    "id": "economy-paint-and-collision-riverside", 
    "is_closed": false, 
    "location": { 
     "city": "Riverside", 
     "display_address": [ 
      "2548 Rubidoux Blvd", 
      "Riverside, CA 92509" 
     ], 
     "geo_accuracy": 8, 
     "postal_code": "92509", 
     "country_code": "US", 
     "address": [ 
      "2548 Rubidoux Blvd" 
     ], 
     "coordinate": { 
      "latitude": 34.0132437, 
      "longitude": -117.3923804 
     }, 
     "state_code": "CA" 
    } 
} 

उत्तर

17

आपको शायद समस्या हो रही है क्योंकि समीक्षा एक सरणी है और आप इसे JSON ऑब्जेक्ट के रूप में एक्सेस करने का प्रयास कर रहे हैं।

$obj = json_decode($data, TRUE); 
for($i=0; $i<count($obj['reviews']); $i++) { 
    echo "Rating is " . $obj['reviews'][$i]["rating"] . " and the excerpt is " . $obj['reviews'][$i]["excerpt"] . "<BR>"; 
} 
+0

आप सुंदर, सुंदर आदमी धन्यवाद !!! इस उत्तर तक कहीं भी तेजी से नहीं जा रहा था – user2170611

+0

उपयोगकर्ता "image_url" जैसे डेटा में चीजें कम कैसे प्राप्त करेंगी? – internetgho5t

1

मुझे यकीन नहीं है कि आप वास्तव में क्या चाहते हैं लेकिन मुझे लगता है कि आप इसे अभी डिबगिंग के लिए प्रिंट करना चाहते हैं। आप print_r($obj); और var_dump($obj); के साथ प्रयास कर सकते हैं - उन्हें कुछ प्रिंट करना होगा, खासकर var_dump()। जब आप डेटा देखते हैं, तो आप आसानी से फ़ंक्शन को थोड़ा संपादित कर सकते हैं, इसलिए उदाहरण के लिए print_r($obj->reviews) या print_r($obj['reviews']), $obj ऑब्जेक्ट या सरणी के आधार पर कर सकते हैं।

+0

उत्तर के लिए धन्यवाद, मैं जो करने की कोशिश कर रहा हूं वह समीक्षा सरणी के भीतर सभी इकाइयों के लिए रेटिंग और अंश को प्रिंट/प्रतिबिंबित करना है। मैं इस डेटा को अकेले प्रिंट/गूंजने के तरीके से खो गया हूं, बाकी सब कुछ – user2170611

0

आप var_dump या print_r का उपयोग कर सकते हैं।

<?php 
$decodedJSON = json_decode($jsonData); 

// Put everyting to the screen with var_dump; 
var_dump($decodedJSON); 

// With print_r (useful for arrays); 
print_r($decodedJSON); 

// List just review ratings with foreach; 
foreach($decodedJSON['reviews'] as $review){ 
    echo $review['rating']; 
} 
?>