0

我有一个二维数组,如下所示:

1 月 1 日、10
日 1 月 2 日、20
日 1 月 2 日、15
日 1 月 3 日、20
日 1 月 3 日、10
日 1 月 3 日、5 日

我需要创建一种方法来扫描这个数组,并将相似日期的数字添加到一个新数组中,这样:

1 月 1 日, 10日 1
月 2 日, 35日 35 年
1 月 3 日

最快的方法是什么?谢谢!

4

1 回答 1

2

尝试这个

<?php

// array of monthdate structure
$monthdate = array();
$monthdate[] = array('date'=>'Jan 1','num'=>10);
$monthdate[] = array('date'=>'Jan 2','num'=>20);
$monthdate[] = array('date'=>'Jan 2','num'=>15);    
$monthdate[] = array('date'=>'Jan 3','num'=>20);
$monthdate[] = array('date'=>'Jan 3','num'=>10);             
// begin the iteration for grouping date and calculate the num
$sumofnum = array();
foreach($monthdate as $month) {
    $index = month_exists($month['date'], $sumofnum);
    if ($index < 0) {
        $sumofnum[] = $month;
    }
    else {
        $sumofnum[$index]['num'] +=  $month['num'];
    }
}
print_r($sumofnum); //display 

// for search if a monthdate has been added into $sumofnum, returns the key (index)
function month_exists($monthname, $array) {
    $result = -1;
    for($i=0; $i<sizeof($array); $i++) {
        if ($array[$i]['date'] == $monthname) {
            $result = $i;
            break;
        }
    }
    return $result;
}
于 2013-08-31T05:50:09.027 回答