2014-12-29 54 views
0

我正在试图找到一种方法来允许我计算跨多个数组显示值的次数以及每个唯一值的总计数。获取数组中的值总计

的数据看起来像下面:

Array ([id] => 4383 [score] => 3) 
Array ([id] => 4382 [score] => 4) 
Array ([id] => 4381 [score] => 5) 
Array ([id] => 4383 [score] => 7) 
Array ([id] => 4383 [score] => 1) 
Array ([id] => 4382 [score] => 2) 
Array ([id] => 4381 [score] => 8) 

以上应返回:

4383 - 3 - 11 
4382 - 2 - 6 
4381 - 2 - 13 

我已经使用array_push并创建了一个阵列名为$输出和使用的foreach得到的计数循环编号的使用:

foreach($output as $row) { 
    $array[$row[0]]++; 
} 

这将返回正确的计数的id,但我不能得到t他的总成绩为每个ID - 我曾尝试:

foreach($output as $row) { 
    foreach($row as $r) { 
     $array[$row[0]]=$array[$row[1]]+$array[$r[1]]; 
    } 
} 

,但它的一切

回答

2

返回零象下面这样:

$result = array(); 

foreach ($data as $value) { 
    if (!isset($result[$value['id']])) { 
    $result[$value['id']] = array('count' => 0, 'sum' => 0); 
    } 
    $result[$value['id']]['count'] += 1; 
    $result[$value['id']]['sum'] += $value['score']; 
} 
+0

谢谢你,伟大工程 – bhttoan

1
$result = array(); 

foreach ($output as $row) { 

    if (!array_key_exists($row[0], $result)) { 
     $result[$row[0]] = array("Count" => 1, "Total" => $row[1]); 
    } 

    else { 
     $result[$row[0]]['Count'] += 1; 
     $result[$row[0]]['Total'] += $row[1]; 
    } 
} 

print_r($result);