我有以下代码组合了2个数组,并将相同的值相加。
所以打印将是
Array
(
[1] => 30
[2] => 30
[3] => 40
)
但是期望的结果是
Array
(
[1] => 15
[2] => 30
[3] => 40
)
因为我正在寻找(10+20)/2
。
如何编辑代码来实现这个目标?
$ids = Array(1, 1, 2, 3);
$quants = Array(10, 20, 30, 40);
$a = array_unique($ids);
$a = array_combine($a, array_fill(0, count($a), 0));
foreach($ids as $k=>$v) {
$a[$v] += $quants[$k];
}
print_r($a);
答案 0 :(得分:0)
也许这可能会有所帮助
$ids = Array(1, 1, 2, 3);
$quants = Array(10, 20, 30, 40);
$a = array_unique($ids);
$a = array_combine($a, array_fill(0, count($a), 0));
$x = array_unique($ids);
$count_map = [];
foreach ($x as $temp) {
$count_map[$temp] = 0;
}
foreach($ids as $k=>$v) {
$count_map[$v] = $count_map[$v] + 1;
$a[$v] += $quants[$k];
$a[$v] = $a[$v]/$count_map[$v];
}
print_r($a);