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

Laravel中如何通过循环将数据库数据存入动态扩容数组?

问题修复:动态数组仅保留最后一条数据的解决方法

你的核心问题很明确:$koleksi = [];被放在了for循环内部,每次循环都会重新创建一个空数组,之前循环添加的元素全部被清空,最终自然只剩最后一次循环的结果。

修复方案

1. 基础修复版(保留你原有变量逻辑)

把数组初始化语句移到循环外面,确保整个循环过程中使用的是同一个数组:

// 先初始化空数组,放在循环外部
$koleksi = [];
for ($i = 1; $i < $sumjnssuara; $i++){
    ${&quot;suwara{$i}&quot;} = DB::table('suara')-&gt;where('suara','Suara '.$i)-&gt;pluck('jml_suara')-&gt;sum();
    array_push($koleksi, ${&quot;suwara{$i}&quot;});
}

2. 优化简洁版(去掉不必要的动态变量)

其实完全没必要用${"suwara{$i}"}这类动态变量,直接把查询结果推入数组即可,代码更简洁高效:

$koleksi = [];
for ($i = 1; $i < $sumjnssuara; $i++){
    // 直接调用sum(),无需先pluck再sum,减少数据处理步骤
    $koleksi[] = DB::table('suara')
        ->where('suara', 'Suara ' . $i)
        ->sum('jml_suara');
}

额外说明

Laravel Query Builder支持直接对指定字段求和(sum('字段名')),不需要先pluck取出所有值再用PHP的sum()计算,这样能减少内存占用,提升查询效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:45:38