Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP解析Json_Php_Json_Parsing - Fatal编程技术网

用PHP解析Json

用PHP解析Json,php,json,parsing,Php,Json,Parsing,下面给出的是我的json数组,它是我在做了一个 $data = json_decode($response); foreach($data[songs] as $key => $value) { echo $value['title']; } 我将此非法字符串偏移量称为“songs”时出错。有人能帮忙吗 { "response":{ "status":{ "version":"4.2", "code":0, "

下面给出的是我的json数组,它是我在做了一个

$data = json_decode($response);

foreach($data[songs] as $key => $value) {
 echo $value['title']; 
}
我将此非法字符串偏移量称为“songs”时出错。有人能帮忙吗

{
   "response":{
      "status":{
         "version":"4.2",
         "code":0,
         "message":"Success"
      },
      "start":0,
      "total":169,
      "songs":[
         {
            "id":"SOVZDWG13EDE8AA5F6",
            "title":"Live And Let Die (Professional Backing Track)"
         },
         {
            "id":"SOVZQDT1373E96845D",
            "title":"Cival War"
         },
         {
            "id":"SOIHVBA1373E967FC7",
            "title":"Free Fallin'"
         },
         {
            "id":"SOHTILC137377A4D5A",
            "title":"PARADISE CITY (1989 Radio Edit)\/(CONTENT!)"
         },
         {
            "id":"SOTHTHM137376FDC30",
            "title":"IT'S SO EASY (CC Cleaner Edit)\/(LYRICS!)\/(CONTENT!)"
         },
         {
            "id":"SOSGUMG137392B086C",
            "title":"MR. BROWNSTONE (CC Clean)"
         },
         {
            "id":"SOAIMVY13739563B7F",
            "title":"NOVEMBER RAIN (Long Edit)"
         },
         {
            "id":"SOHTFWB13732F1645D",
            "title":"MOVE TO THE CITY (Live)\/(CC Clean)\/(CONTENT!)"
         },
         {
            "id":"SOINGWZ137337DD251",
            "title":"CIVIL WAR (CONTENT!)"
         },
         {
            "id":"SOJMUVZ136F21B42BC",
            "title":"Neurobomb"
         },
         {
            "id":"SOXPBNG136749B5A8B",
            "title":"SWEET CHILD O' MINE (Edit\/Remix)"
         },
         {
            "id":"SOCQGYZ1366D7B44B0",
            "title":"MADAGASCAR (CC Clean Edit)"
         },
         {
            "id":"SOXHMOW1366D7B84F6",
            "title":"RIAD N' THE BEDOUINS (CC Clean)"
         },
         {
            "id":"SOFCXWC1366DBED3DA",
            "title":"Nighttrain (Live)"
         },
         {
            "id":"SORXNZT1366E397CEC",
            "title":"DUST N' BONES (CC Clean)"
         }
      ]
   }
}

只要做var_dump($data),你的错误就会显而易见

我不确定,但我想如果不先输入“响应”,您就无法访问数据[“歌曲”]

试试以下方法:

foreach($data->response->songs as $song) {
    print_r($song);
}
你有两个问题。您没有访问
响应
属性,并且没有将
json\u decode()
的结果作为对象处理。

一个简单的
json\u decode($jsonstring)
将返回stdClass对象和数组的混合。字符串键是对象属性,JSON数组是从索引0开始的PHP数组


使用
json\u decode($jsonstring,true)
仅获取具有字符串键的数组。

阅读有关数组键的更多信息。您的问题附带说明,但是
$data[songs]
应该是
$data['songs']
。它可以在没有引号的情况下工作,但这只是因为一个古老的PHP版本允许这样做,而且他们还不敢删除“功能”。-1,它是一个对象,而不是一个关联数组$data=json_encode($response);foreach($data['response']['songs']as$key=>$value){echo$value['title'];}“它是一个对象,不是一个关联数组”-它也会由一个var_dump显示。@Danack,当然会,但是您的答案是错误的,您甚至没有更新它。+1不知道该参数:)这应该是正确的答案,因为它向您展示了如何获得预期的关联数组:为什么它不能和echo一起工作?是的<代码>回声$song->id。