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

Laravel视图foreach循环报错:Attempt to read property "data_audit" on array

问题原因及修复方案

错误原因

后端生成的$data是嵌套数组结构:每个区域键对应一个数组集合,集合内的每个元素是包含data_audit的关联数组。而前端Blade代码直接对这个数组集合使用对象属性访问符->,且未遍历集合内的单个审计记录,导致报错“Attempt to read property "data_audit" on array”。

修复方案

方案一:调整前端Blade代码(推荐)

修正循环逻辑,先遍历区域分组,再遍历每组下的审计记录,同时用数组索引访问属性:

<div class="audit-daily-intestazione">
    @if (!empty($data))
        @foreach ($data as $areaKey => $auditRecords)
            <!-- 可选:展示区域信息,拆分分隔符 -->
            <div>
                <span class="audit-daily-text39">
                    <strong style="font-size: 13px;">{{ str_replace('|', ' / ', $areaKey) }}</strong>
                </span>
            </div>
            <!-- 遍历该区域下的所有审计记录 -->
            @foreach ($auditRecords as $audit)
                <div>
                    <span class="audit-daily-text39">
                        <strong style="font-size: 13px;">{{ \Carbon\Carbon::parse($audit['data_audit'])->format('d/m') }}</strong>
                    </span>
                </div>
            @endforeach
        @endforeach
    @endif
</div>

方案二:后端将数组转为对象(可选)

如果偏好使用对象属性访问,可以在后端将每个审计条目转为对象:

foreach ($audits as $audit) {
    $areaKey =  "{$audit->master_zone}|{$audit->subarea}|{$audit->microarea}";
    // 将数组转为对象
    $data[$areaKey][] = (object)[
        'esito' => $audit->esito,
        'data_audit' => $audit->data_audit
    ];
};

此时前端内层循环可改用$audit->data_audit访问属性,但仍需保持嵌套循环结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:15:55