使用PHP提取多层嵌套JSON的file_code值,循环报错如何解决
问题解决方法
报错原因
json_decode()第二个参数默认值为false,解析JSON后返回的是对象类型,而非关联数组,你用数组方括号[]访问对象属性会得到NULL,不是foreach支持的可遍历结构,因此抛出警告。- 原代码循环逻辑有误:不需要遍历整个
result字段,直接取result下的files数组遍历即可,否则遍历到result内的total_pages、results_total等非数组字段时,第二层foreach依然会报错。
两种可行实现方案
方案1:沿用对象语法访问
和你测试成功的单条取值语法保持一致,直接遍历files对象数组:
$json = json_decode($data); foreach ($json->result->files as $file) { echo $file->file_code . PHP_EOL; }
方案2:转为关联数组操作
如果更习惯用数组语法处理,给json_decode()第二个参数传true,即可返回关联数组格式的解析结果:
// 第二个参数设为true,解析为关联数组 $json = json_decode($data, true); foreach ($json['result']['files'] as $file) { echo $file['file_code'] . PHP_EOL; }
内容的提问来源于stack exchange,提问作者Gir brodly
相关产品推荐
相关产品推荐

