2013-03-25 2 views
13
를 사용하는

내 PHP 코드 :가 아닌 배열을 위해 작동하지만어떻게 JSON 배열을 반복 PHP

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

, 나는 내 인생에서 모든 값을 인쇄하는 방법을 알아낼 수 없습니다 " 리뷰 "배열.

나는이 응답을 통해 forreach()를 통해 루프를 작성하여 응답의 각 검토에 대한 평가 및 발췌 내용이 포함 된 목록을 작성합니다.

대단히 감사합니다 모든 지침/방향

.. 아래

내가 함께 일하고 있어요 JSON이다. (Yelp API의 응답입니다).

{ 
    "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()입니다. 데이터가 표시되면 기능을 쉽게 편집 할 수 있으므로 $obj이 객체인지 배열인지에 따라 인스턴스가 print_r($obj->reviews) 또는 print_r($obj['reviews']) 일 수 있습니다.

+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']; 
} 
?>