PHP解析JSON后输出messages的id时报Attempt to read property错误
错误原因
你代码的报错本质是messages字段在JSON结构中是索引数组类型,不是对象,不能直接用->语法读取内部的id属性。
你提供的JSON里messages对应值为[{"id":"123","rct":999}],外层的方括号代表这是一个数组,数组的第一个元素才是包含id属性的对象。
修复方案
方案1:保留对象解析方式,指定数组索引
修改输出语句,先取messages数组的第0位元素再读取id:
<?php $result ='{"num":1,"message":{"cont":"test"},"messages":[{"id":"123","rct":999}],"status":"success"}'; $obj = json_decode($result); echo $obj->messages[0]->id; ?>
运行后即可正常输出123。
方案2:转为关联数组读取
给json_decode传入第二个参数true,将JSON整体解析为关联数组,用数组语法访问:
<?php $result ='{"num":1,"message":{"cont":"test"},"messages":[{"id":"123","rct":999}],"status":"success"}'; $arr = json_decode($result, true); echo $arr['messages'][0]['id']; ?>
如果messages数组中存在多个元素,遍历数组即可读取所有id值。
内容的提问来源于stack exchange,提问作者samim akhtar
相关产品推荐
相关产品推荐

