Laravel中Guzzle获数据后,Blade视图如何访问嵌套数组?
问题解决方法
错误原因
你犯了两个关键错误:
- 嵌套数组的键名记错了:实际是
SODTL,不是你以为的TL SODTL是数组套数组结构,它的第一个元素是索引为0的子数组,不能直接访问SODTL['Dtl']
正确访问方式
直接访问(确保SODTL有数据时可用)
{{ $data['SODTL'][0]['Dtl'] }}
安全访问(避免空值报错)
用Laravel自带的data_get辅助函数,即使某个层级不存在也不会抛出错误,还能设置默认值:
{{ data_get($data, 'SODTL.0.Dtl') }} // 带默认值的写法 {{ data_get($data, 'SODTL.0.Dtl', '无明细数据') }}
为什么之前的写法报错
{{ $data['TL']['Dtl'] }}:$data里根本没有TL这个键,所以报"Undefined array key 'Dtl'"(本质是找不到TL){{ $data->TL['Dtl'] }}:你用json_decode($res->getBody(), true)把返回值转成了数组,不是对象,不能用->的对象属性访问方式,所以报"Attempt to read property 'TL' on array"
附你的数据结构参考
从dump的结果可以明确看到层级关系:
array:41 [▼ "Key" => 31454 "DocNo" => "SO-000275" "AOQty" => 0.0 "SODTL" => array:1 [▼ 0 => array:21 [▼ "Dtl" => 31455 // ...其他字段 ] ] ]
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

