2013-03-25 7 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']; 
} 
?>