在PHP中从JSON打印单个字段

时间:2014-03-07 16:57:23

标签: php json

我现在已经尝试了几个小时来从json代码获取title字段。下面是我的PHP代码

$search = $_GET['search'];

  $new = str_replace(' ', '+', $search);

  $url = "http://api.themoviedb.org/3/search/movie?api_key=###&query=".$new;
  $json = file_get_contents($url);
  $json_data = json_decode($json, true);


  $title = $json_data->title;
  echo $title;

这是json的var转储

array(4) { ["page"]=> int(1) ["results"]=> array(1) { [0]=> array(10) { ["adult"]=> bool(false) ["backdrop_path"]=> string(32) "/4uJZvmEMX6Z6ag3bzym5exLY9wI.jpg" ["id"]=> int(65) ["original_title"]=> string(6) "8 Mile" ["release_date"]=> string(10) "2002-11-08" ["poster_path"]=> string(32) "/dXzTrKwpbLpCqn8O70FUUhNbYQT.jpg" ["popularity"]=> float(3.792332418578) ["title"]=> string(6) "8 Mile" ["vote_average"]=> float(6.2) ["vote_count"]=> int(185) } } ["total_pages"]=> int(1) ["total_results"]=> int(1) } 

我不断得到的错误是注意:试图获取非对象的属性

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

$json_data = json_decode($json, true);

将返回一个不是对象的数组

所以你需要使用

$json_data["title"];

注意:您的json解码数组是嵌套的,因此您可能需要像在您的情况下一样使用。

$json_data["results"][0]["title"];

或者更好地循环并获得所需的数据。

答案 1 :(得分:0)

我刚刚开始使用PHP,我认为这可能对你有所帮助......但我不确定

foreach($json_data as $key => $value){
    if($key == "results"){
        $json_data2 = $value;
    }
}

foreach($json_data2 as $key => $value){
    if($key == "original_title"){
        $title = $value;
    }
}
echo $title;