PHP中无法遍历API返回的JSON数组数据,求解决方法
问题解决:关联数组遍历错误修复
你犯了一个典型的错误:用对象访问语法(->)去操作关联数组。因为你调用json_decode($resp, true)时传了第二个参数true,这个参数会让JSON字符串转换成关联数组,而不是PHP对象。
正确的处理方式
根据你描述的数组结构($decode包含error、result,result下有property子数组),直接用数组索引([])访问即可,不需要嵌套两层foreach:
$propertys = []; // 先做存在性判断,避免Undefined index报错 if (isset($decode['result']['property']) && is_array($decode['result']['property'])) { foreach ($decode['result']['property'] as $data) { $property = [ 'id' => $data['PROPERTY_ID'], 'sale' => $data['SALE_RENT'] ]; $propertys[] = $property; } }
关键说明
- 当
json_decode第二个参数为true时,所有层级的JSON结构都会转成关联数组,必须用$array['key']的方式访问,而不是$object->key。 - 增加
isset()和is_array()判断是为了避免因API返回结构异常导致的报错,比如当result或property不存在时,代码不会直接崩溃。
内容的提问来源于stack exchange,提问作者dceekay
相关产品推荐
相关产品推荐

