15

私の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"
    }
}
4

4 に答える 4

23

レビューは配列であり、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>";
}
于 2013-03-25T03:30:02.320 に答える
1

正確に何が必要かはわかりませんが、今すぐデバッグするためだけに印刷したいと思います。あなたはで試すことができますprint_r($obj);-var_dump($obj);彼らは特に何かを印刷する必要がありますvar_dump()。データを見ると、関数を少し簡単に編集できるので、オブジェクトか配列かに応じて、たとえばprint_r($obj->reviews)またはを行うことができます。print_r($obj['reviews'])$obj

于 2013-03-25T03:19:14.167 に答える
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'];
}
?>
于 2013-03-25T03:28:28.963 に答える
0

ここでは、オブジェクトの例を使用しています(レビューを読むために...評価):

$jsonObject = json_decode($data);
foreach ($jsonObject->reviews as $data) {
    echo $data->rating;
}
于 2019-10-10T08:12:17.413 に答える