我有一个数组,下面有一个小例子
Array (2)
system => Array (1)
system_id => 3
proc => Array (4)
proc_id => 5
proc_or => 1
proc_owner => 7751
results => Array (7)
0 => Array (5)
process_id => 101
process => 1335
process_name => xa
process_owner => xo
rating => 67.554
1 => Array (6)
process_id => 122
process => 1335
process_name => xa
process_owner => xo
rating => 33.554
proc_rel => xf
2 => Array (5)
process_id => 101
process => 1227
process_name => xd
process_owner => xa
rating => 123.78
3 => Array (8)
process_id => 101
process => 1291
process_name => xa
process_owner => xo
rating => 64.241
proc_rel => xf
proc_rel_id => 1474
proc_rel_owner => xm
我需要能够组织它,使其仅包含唯一的process_id值,因此结果2和3将被删除,并且该剩余唯一ID的评级是具有该ID的记录的所有评级的总和,因此结果0评级id将成为结果0 2和3的总和。
有数以千计的记录,因此如果没有某种自动化循环,这样做是不切实际的
我在考虑创建一个新阵列并正在处理它
如果process_id不在新数组中,则添加它和所有相关数据 如果进程ID已经在数组中,则只需将rating的值添加(+)到现有值。
我试图调整我发现的几个循环,但它们似乎没有正常工作。
不确定这是否可行,我不知道该怎么做,所以任何建议都非常感谢。
答案 0 :(得分:1)
如果数据集很大,那么最好在生成数据集时尝试调整数据库查询或更改文件结构。如果不可能那么唯一合理的方法是创建新数组:
$newArray = ();
foreach($array['proc']['results'] as $result) {
if (isset($newArray[$result['process_id']]) {
$newArray[$result['process_id']]['rating'] += $result['rating'];
} else {
$newArray[$result['process_id']] = $result;
}
}