您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP使用json为何总是报错

2025/9/12 16:10:56发布15次查看
{'foo'}; // 12345
?>
抱的错都是类似syntax error, unexpected 'status' (t_string) in /applications/mamp/htdocs/testjson.php on line 5
回复讨论(解决方案) 你的代码就这些?那把json里面注释去掉。。。
你的代码就这些?那把json里面注释去掉。。。
好像去掉注释真的可以显示出来了,大概是这样的
object(stdclass)#1 (2) 
{   
[status]=> string(2) ok 
[basic]=> object(stdclass)#2 (6) 
{   
[city]=> string(6) 北京 
[cnty]=> string(6) 中国 
[id]=> string(11) cn101010100 
[lat]=> string(9) 39.904000 
[lon]=> string(10) 116.391000 
[update]=> object(stdclass)#3 (2) 
{   
[loc]=> string(16) 2015-07-02 14:44 
[utc]=> string(16) 2015-07-02 06:46 


}
排好版之后的样子,那比如说 $res = json_decode($res) 之后应该怎么提取这个数组里面的“id”的值呢 $obj->basic->id
json_decode($json, true);
出来的就是数组了
好像不行,这样没法提取单个数据值
当我从一个url获取了json包之后,$res = curl_exec($ch);    不论怎么处理,整个json包都会展现出来,而不是我想要提取的其中某个字段
这段请求无法获取到需要的天气值
echo $res[key($res)][0]['now']['cond']['txt']; //多云
其实你 print_r($res); 就可以看到 now 是在第三维的
注释去掉即可
$res = '{ status: ok, basic: { city: 北京, cnty: 中国, id: cn101010100, lat: 39.904000, lon: 116.391000, update: { loc: 2015-07-02 14:44, utc: 2015-07-02 06:46 } }}';var_dump(json_decode($res)); //显示结果

object(stdclass)[1]
public 'status' => string 'ok' (length=2)
public 'basic' =>
object(stdclass)[2]
public 'city' => string '北京' (length=6)
public 'cnty' => string '中国' (length=6)
public 'id' => string 'cn101010100' (length=11)
public 'lat' => string '39.904000' (length=9)
public 'lon' => string '116.391000' (length=10)
public 'update' =>
object(stdclass)[3]
public 'loc' => string '2015-07-02 14:44' (length=16)
public 'utc' => string '2015-07-02 06:46' (length=16)
获取id可以这样写
$res = '{ status: ok, basic: { city: 北京, cnty: 中国, id: cn101010100, lat: 39.904000, lon: 116.391000, update: { loc: 2015-07-02 14:44, utc: 2015-07-02 06:46 } }}';$data = json_decode($res); //显示结果echo $data->basic->id;

cn101010100
echo $res[key($res)][0]['now']['cond']['txt']; //多云
其实你 print_r($res); 就可以看到 now 是在第三维的
好像还是不行,刚才试了一下你这个,也不能输出任何东西
注释去掉即可
$res = '{ status: ok, basic: { city: 北京, cnty: 中国, id: cn101010100, lat: 39.904000, lon: 116.391000, update: { loc: 2015-07-02 14:44, utc: 2015-07-02 06:46 } }}';var_dump(json_decode($res)); //显示结果

object(stdclass)[1]
public 'status' => string 'ok' (length=2)
public 'basic' =>
object(stdclass)[2]
public 'city' => string '北京' (length=6)
public 'cnty' => string '中国' (length=6)
public 'id' => string 'cn101010100' (length=11)
public 'lat' => string '39.904000' (length=9)
public 'lon' => string '116.391000' (length=10)
public 'update' =>
object(stdclass)[3]
public 'loc' => string '2015-07-02 14:44' (length=16)
public 'utc' => string '2015-07-02 06:46' (length=16)
获取id可以这样写
$res = '{ status: ok, basic: { city: 北京, cnty: 中国, id: cn101010100, lat: 39.904000, lon: 116.391000, update: { loc: 2015-07-02 14:44, utc: 2015-07-02 06:46 } }}';$data = json_decode($res); //显示结果echo $data->basic->id;

cn101010100
麻烦看一下我7楼的代码,从中如何提取天气的txt
$ch = curl_init();$url = 'https://api.heweather.com/x3/weather?cityid=cn101200101&key=7081f8010abe4638a86e0c4c1cfee30e';// 执行http请求curl_setopt($ch , curlopt_url , $url);curl_setopt($ch , curlopt_ssl_verifypeer , false);curl_setopt($ch, curlopt_returntransfer, 1);$res = json_decode(curl_exec($ch), true); //json_decode 要有第二个参数,这样可解析成数组echo $res[key($res)][0]['now']['cond']['txt'], php_eol; //为什么要这样写,看看 print_r 的输出就知道了print_r($res);
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product