从PHP对象获取值

时间:2015-10-03 16:43:49

标签: php json object

我正在尝试弄清楚如何回应使用此程序wrapper创建的对象中的流派值,该程序从'The Movie Database'请求json数据。我很困难并且正在努力去理解面向对象的PHP,所以任何帮助都会很棒。 我认为它是'嵌套'的事实(如果这是正确的术语)可能是问题。

<?php 

    include("tmdb/tmdb-api.php");

    $apikey = "myapi_key";
    $tmdb = new TMDB($apikey, 'en', true);
    $idMovie = 206647;

    $movie = $tmdb->getMovie($idMovie);

    // returns a Movie Object
    echo $movie->getTitle().'<br>';
    echo $movie->getVoteAverage().'<br>';
    echo '<img src="'. $tmdb->getImageURL('w185') . $movie->getPoster() .'"/></li><br>';
    echo $movie->genres->id[28]->name;
?>

所有其他值都很好地回应但我似乎无法获得类型。 json数据看起来像这样(其中一些)。

    { 
    "adult":false, 
    "backdrop_path":"\/fa9qPNpmLtk7yC5KZj9kIxlDJvG.jpg",
    "belongs_to_collection":{
        "id":645,
        "name":"James Bond Collection",
        "poster_path":"\/HORpg5CSkmeQlAolx3bKMrKgfi.jpg",
        "backdrop_path":"\/6VcVl48kNKvdXOZfJPdarlUGOsk.jpg" },
        "budget": 0,
        "genres":[
            { "id": 28, "name": "Action" }, 
            { "id": 12, "name": "Adventure" }, 
            { "id": 80, "name": "Crime" } 
        ], 
    "homepage":"http:\/\/www.sonypictures.com\/movies\/spectre\/",
    "id":206647,
    "imdb_id":"tt2379713",
    "original_language":"en",
    "original_title":"SPECTRE",
    "overview":"A cryptic message from Bond\u2019s past sends him on a trail to uncover a sinister organization. While M battles political forces to keep the secret service alive, Bond peels back the layers of deceit to reveal the terrible truth behind SPECTRE."
}

1 个答案:

答案 0 :(得分:2)

$movie->genres->id[28]->name

这假设id是一个数组,并且你想要索引号为28的项目。你想要的是项目包含一个值为28的id而不知道它的索引号。

没有简单的方法可以达到目的。你必须遍历数组$movie->genres并输出正确的数组。 也许是这样的:

$n = 28;
// loop over genres-array
foreach($movie->genres as $i=>$g){
    // check if id of item has right value and if so print it
    if($g->id == $n){
        echo $g->name;
        // skip rest of loop if you only want one 
        break;
    }
}