我想根据两个列的值对一些行的数据进行分组和求和。
我的输入是:
$array = [ ['FA',12.9], ['FA',12.9], ['FB',12.2], ['FC',12.3], ['FA',12.9], ['FB',12.9], ['FA',12.4], ];
我想将分组后的行值打印为一个字符串,然后是一个x
和出现的总次数,格式如下:
FA 12.9x3 FB 12.2x3
我已经编写了代码来计算每个组中值的出现次数,但是我不知道如何以这种格式打印出来:
$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; } } }
这个代码可以优化并以正确的格式打印出来吗?
期望的输出:
FA 12.9x3 FB 12.2x1 FC 12.3x1 FB 12.9x1 FA 12.4x1
使用
array_reduce
以一种特殊而有用的方式,我们可以按名称将项目进行分组。然后再按值进行分组并计数。这个想法是传递一个累积值作为键的数组。输出: