我使用curl向服务器发送GET
请求并获取json数据。当我在浏览器中打印这些数据时,我可以看到没有斜线的正确json结构(魔术引号关闭) - 根本没有问题。
即使我将这个json数据从浏览器粘贴到变量中的另一个php文件,然后尝试解码它也能正常工作。数据在该文件中解码。
但是,当我尝试解码数据时从cURL请求获取数据后,它失败了。它返回的全部是:数组
以下是我的尝试:
$resp = curl_exec($curl);
$d=json_decode($resp,true);
我不知道为什么这种奇怪的行为? 我已经尝试了这个帖子json_decode returns NULL after webservice call
中提到的几乎所有内容我还检测到使用mb_detect_encoding
进行cURL调用返回的字符串编码,它是UTF-8
这件事让我发疯了......
更新:好的.....似乎json_decode已经解码了数据并返回$ d变量,但我无法从数组中访问该元素。我使用 print_r 来查看数组的结构。有点像这样:
Array ( [response] => Array ( [start] => 0 [docs] => Array ( [0] => Array ( [id] => S132250037010452 [slno] => 452 ) ) [numFound] => 1 ) )
当我尝试使用:
echo $d[response][docs][0][id];
我收到一条通知说明:使用未定义的常量响应 - 假设“#response”响应'在那条线上。这是什么意思??
答案 0 :(得分:0)
修改完成后,要访问此字段,您需要将其隐藏在'
echo $d['response']['docs'][0]['id']; // <--- Will return 'S132250037010452'
如果您不附上名称,PHP将尝试用作常量