如何按evaluation_category_id
Array
(
[0] => Array
(
[id] => 60
[evaluation_category_id] => 3
[score] => 15
[itemMaxPoint] => 20
)
[1] => Array
(
[id] => 61
[evaluation_category_id] => 2
[score] => 10
[itemMaxPoint] => 20
)
[2] => Array
(
[id] => 62
[evaluation_category_id] => 1
[score] => 5
[itemMaxPoint] => 20
)
[3] => Array
(
[id] => 63
[evaluation_category_id] => 1
[score] => 50
[itemMaxPoint] => 200
)
[4] => Array
(
[id] => 64
[evaluation_category_id] => 2
[score] => 150
[itemMaxPoint] => 200
)
[5] => Array
(
[id] => 65
[evaluation_category_id] => 3
[score] => 30
[itemMaxPoint] => 50
)
.
.
.
)
所以我得到这样的数组
Array
(
[0] => Array
(
[evaluation_category_id] => 3
[score] => 45
[itemMaxPoint] => 70
)
[1] => Array
(
[evaluation_category_id] => 2
[score] => 160
[itemMaxPoint] => 220
)
[2] => Array
(
[evaluation_category_id] => 1
[score] => 55
[itemMaxPoint] => 220
)
}
我试过这个,但它不起作用。请纠正我在哪里做错了
public function test($data) {
$groups = array();
foreach ($data as $item) {
$key = $item['evaluation_category_id'];
if (!isset($groups[$key])) {
$groups[$key] = array(
'id' => $key,
'score' => $item['score'],
'itemMaxPoint' => $item['itemMaxPoint'],
);
} else {
$groups[$key]['score'] = $groups[$key]['score'] + $item['score'];
$groups[$key]['itemMaxPoint'] = $groups[$key]['itemMaxPoint'] +$item['itemMaxPoint'];
}
}
return $groups;
}
输出
Array
(
[2] => Array
(
[id] => 2
[score] => 121 //121 because the given array is different.but its actually SUM all values of score
[itemMaxPoint] => 300
)
)
答案 0 :(得分:6)
我已经解决了。
public function getDateWiseScore($data) {
$groups = array();
foreach ($data as $item) {
$key = $item['evaluation_category_id'];
if (!array_key_exists($key, $groups)) {
$groups[$key] = array(
'id' => $item['evaluation_category_id'],
'score' => $item['score'],
'itemMaxPoint' => $item['itemMaxPoint'],
);
} else {
$groups[$key]['score'] = $groups[$key]['score'] + $item['score'];
$groups[$key]['itemMaxPoint'] = $groups[$key]['itemMaxPoint'] + $item['itemMaxPoint'];
}
}
return $groups;
}
答案 1 :(得分:0)
你可以做一个Foreach,为相等的键生成数组,然后为你想要求和的每个数组值生成array_sum():)