Kumpulan mengikut kumpulan, kira jumlah kejadian setiap kumpulan dan cetak data sebagai rentetan yang diformatkan
P粉970736384
2023-09-05 22:43:27
<p>Saya mahu mengumpulkan dan menjumlahkan data beberapa baris berdasarkan nilai dua lajur. </p>
<p>Input saya ialah:</p>
<pre class="brush:php;toolbar:false;">$array = [
['FA',12.9],
['FA',12.9],
['FB',12.2],
['FC',12.3],
['FA',12.9],
['FB',12.9],
['FA',12.4],
];</pre>
<p>Saya mahu mencetak nilai baris terkumpul sebagai rentetan, diikuti dengan <kod>x</kod> dan jumlah bilangan kejadian, dalam format berikut: </p>
<pre class="brush:php;toolbar:false;">FA 12.9x3
FB 12.2x3</pre>
<p>Saya telah menulis kod untuk mengira kejadian nilai dalam setiap kumpulan, tetapi saya tidak tahu cara mencetaknya dalam format ini: </p>
<pre class="brush:php;toolbar:false;">$new = [];
foreach ($array as $key=> $value) {
jika (!array_key_exists($value[0],$new)) {
$new[$value[0]]=[strval($value[1])=>1];
}
lain {
jika (!array_key_exists(strval($value[1]),$new[$value[0]])) {
$new[$value[0]][strval($value[1])]=1;
// $no+=1;
}
lain {
$count= $new[$value[0]];
$count=$count[strval($value[1])];
$count+=1;
$new[$value[0]][strval($value[1])]=$count;
}
}
}</pre>
<p>Bolehkah kod ini dioptimumkan dan dicetak dalam format yang betul? </p>
<p>Output yang diingini: </p>
<pre class="brush:php;toolbar:false;">FA 12.9x3
FB 12.2x1
FC 12.3x1
FB 12.9x1
FA 12.4x1</pre></p>
Menggunakan
array_reduce
Dengan cara yang istimewa dan berguna kita boleh mengumpulkan projek mengikut nama. Kemudian kumpulkan mengikut nilai dan kira. Ideanya adalah untuk menghantar tatasusunan dengan nilai terkumpul sebagai kunci.Keluaran: