按群組分組,計算每組出現次數總和,並以格式化字串列印數據
P粉970736384
2023-09-05 22:43:27
<p>我想根據兩個列的值對一些行的資料進行分組和求和。 </p>
<p>我的輸入是:</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>我想將分組後的行值印成字串,然後是<code>x</code>和出現的總次數,格式如下:</p>
<pre class="brush:php;toolbar:false;">FA 12.9x3
FB 12.2x3</pre>
<p>我已經寫了程式碼來計算每個組中值的出現次數,但是我不知道如何以這種格式列印出來:</p>
<pre class="brush:php;toolbar:false;">$new = [];
foreach ($array as $key=> $value) {
if (!array_key_exists($value[0],$new)) {
$new[$value[0]]=[strval($value[1])=>1];
}
else {
if (!array_key_exists(strval($value[1]),$new[$value[0]])) {
$new[$value[0]][strval($value[1])]=1;
// $no =1;
}
else {
$count= $new[$value[0]];
$count=$count[strval($value[1])];
$count =1;
$new[$value[0]][strval($value[1])]=$count;
}
}
}</pre>
<p>這個程式碼可以優化並以正確的格式列印出來嗎? </p>
<p>期望的輸出:</p>
<pre class="brush:php;toolbar:false;">FA 12.9x3
FB 12.2x1
FC 12.3x1
FB 12.9x1
FA 12.4x1</pre></p>
使用
array_reduce
以一種特殊而有用的方式,我們可以按名稱將項目分組。然後再按值進行分組併計數。這個想法是傳遞一個累積值作為鍵的陣列。輸出: