You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade遍历嵌套数组报错:Trying to access array offset on value of type int

错误原因与解决方案

错误原因

你给出的$row['status']是单个关联数组(而非数组集合),但你用foreach遍历它。遍历关联数组时,循环变量$r会依次拿到每个键对应的值(比如groupId对应的3、groupName对应的DELIVERED),这些值是int或string类型,不是数组。当你尝试访问$r['groupName']时,自然会触发“在int类型值上访问数组偏移量”的错误。

解决方案

根据你的数据结构,直接去掉内层foreach,直接访问status数组的groupName字段即可:

@foreach($response['results'] as $row)
    <tr>
       <td>
            Status- {{ $row['status']['groupName'] }}
       </td>
       <td>{{ \Carbon\Carbon::parse($row['sentAt'])->diffInSeconds(\Carbon\Carbon::parse($row['from'])) }}</td>
       <td>{{ \Carbon\Carbon::parse($row['doneAt'])->diffInSeconds(\Carbon\Carbon::parse($row['to'])) }}</td>
    </tr>
@endforeach

如果存在部分status是多元素数组的情况(即部分结果里status是数组集合),可以增加判断逻辑兼容两种情况:

@foreach($response['results'] as $row)
    <tr>
       <td>
            @if(is_array($row['status']))
                @if(is_array(reset($row['status'])))
                    @foreach($row['status'] as $r)
                        Status- {{ $r['groupName'] }}<br>
                    @endforeach
                @else
                    Status- {{ $row['status']['groupName'] }}
                @endif
            @endif
       </td>
       <td>{{ \Carbon\Carbon::parse($row['sentAt'])->diffInSeconds(\Carbon\Carbon::parse($row['from'])) }}</td>
       <td>{{ \Carbon\Carbon::parse($row['doneAt'])->diffInSeconds(\Carbon\Carbon::parse($row['to'])) }}</td>
    </tr>
@endforeach

额外注意事项

你代码中的{{$row['from'] - $row['sentAt']}}是字符串直接做减法,会导致计算结果异常。Laravel内置Carbon日期处理库,建议先将日期字符串转为Carbon实例,再计算时间差(可根据需求替换diffInSeconds为diffInMinutes、diffInHours等)。

内容的提问来源于stack exchange,提问作者Hola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:07:47