I want to insert data from the database into an array that can be increased in number. So maybe you can use a loop but the data is stacked, not added and returns the last data
i am trying to use for with $i++ to generate $variable.$i. that’s what I was expecting but I don’t understand how to run it
JavaScript
x
for ($i = 1; $i < $sumjnssuara; $i++){
$koleksi = [];
${"suwara{$i}"} = DB::table('suara')->where('suara','Suara '.$i)->pluck('jml_suara')->sum();
array_push($koleksi, ${"suwara{$i}"});
}
the problem might be solved if $suwara1++ and makes the $koleksi array grow
Advertisement
Answer
The problem is that you recreate the array at each iteration. you need to create it outside the loop:
JavaScript
$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}"});
}
Then I would get rid of creating variables with a different name in each iteration. That doesn’t make sense:
JavaScript
$koleksi = [];
for ($i = 1; $i < $sumjnssuara; $i++){
$suwara = DB::table('suara')->where('suara','Suara '.$i)->pluck('jml_suara')->sum();
$koleksi[] = $suwara;
}
And finally all of this can be implemented with a single query in the database:
JavaScript
$koleksi = DB::table('suara')
->groupBy('suara')
->pluck(DB::raw('sum(jml_suara) as sum'), 'suara')
->toArray();