Laravel中如何通过循环将数据库数据存入动态扩容数组?
问题修复:动态数组仅保留最后一条数据的解决方法
你的核心问题很明确:$koleksi = [];被放在了for循环内部,每次循环都会重新创建一个空数组,之前循环添加的元素全部被清空,最终自然只剩最后一次循环的结果。
修复方案
1. 基础修复版(保留你原有变量逻辑)
把数组初始化语句移到循环外面,确保整个循环过程中使用的是同一个数组:
// 先初始化空数组,放在循环外部 $koleksi = []; for ($i = 1; $i < $sumjnssuara; $i++){ ${"suwara{$i}"} = DB::table('suara')->where('suara','Suara '.$i)->pluck('jml_suara')->sum(); array_push($koleksi, ${"suwara{$i}"}); }
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
相关产品推荐
相关产品推荐

