我希望根据特定列值和该列中所有值的总和计算数组中每一行的百分比。
样本数据:
$results = [
['type' => 'AA', 'count' => 4],
['type' => 'AE', 'count' => 59],
['type' => 'AF', 'count' => 13],
['type' => 'BB', 'count' => 44],
['type' => 'BC', 'count' => 16],
['type' => 'BD', 'count' => 36]
];
预期结果:
[
['type' => 'AA', 'count' => 4, 'percent' => '2%'],
['type' => 'AE', 'count' => 59, 'percent' => '34%'],
['type' => 'AF', 'count' => 13, 'percent' => '8%'],
['type' => 'BB', 'count' => 44, 'percent' => '26%'],
['type' => 'BC', 'count' => 16, 'percent' => '9%'],
['type' => 'BD', 'count' => 36, 'percent' => '21%'],
]
我的代码:
foreach($results as $row) {
$count = $row['count'];
$type = $row['type'];
$array[$type][] = $count;
}
1条答案
按热度按时间zzzyeukh1#
在对每一行执行运算之前,需要对所有行的
count
值求和(对于示例数据,总数为172)。然后循环遍历这些行,计算百分比并将新的关联行推入新数组。
代码:(Demo)
或者,您可以使用
array_map()
中的现代arrow函数将新列合并到每一行中,而不是使用经典循环。输出(来自任一方法):