如何从$ arr1制作$ arr2 [关闭]

It may be not difficult, but cost me half day, still unsolved.

Here are my code, RESERVE_COUNT is the number that duplicated.

$arr1 is here, $arr2 has no relationship with $arr1, just because I want $arr2, so I want to make $arr2 from existing $arr1. So $arr2 does not exist at first.

If not clear, I will explain better, just tell me.

//$arr1:
array(
    [0] =>
    array(

        ['CLASS_MENU_SYMBOL'] => 'A'
        ['STAFF_ID'] => 3010120001
        ['STAFF_START_TIME'] => '09:00'
        ['STAFF_END_TIME'] => '10:00'
    )

    [1] =>
    array(

        ['CLASS_MENU_SYMBOL'] => 'B'
        ['STAFF_ID'] => 3010120001
        ['STAFF_START_TIME'] => '13:00'
        ['STAFF_END_TIME'] => '14:00'
    ) 

    [2] =>
    array(

        ['CLASS_MENU_SYMBOL'] => 'A'
        ['STAFF_ID'] => 3010120001
        ['STAFF_START_TIME'] => '09:00'
        ['STAFF_END_TIME'] => '10:00'
    ) 

    [3] =>
    array(

        ['CLASS_MENU_SYMBOL'] => 'A'
        ['STAFF_ID'] => 3010120001
        ['STAFF_START_TIME'] => '10:00'
        ['STAFF_END_TIME'] => '11:00'
    ) 
)

//$arr2:
array(
    [0] =>
    array(

        ['CLASS_MENU_SYMBOL'] => 'A'
        ['STAFF_ID'] => 3010120001
        ['STAFF_START_TIME'] => '09:00'
        ['STAFF_END_TIME'] => '10:00'
        ['RESERVE_COUNT'] => 2 //exactly same record appeared in $arr1 twice, so here is 2
    )

    [1] =>
    array(

        ['CLASS_MENU_SYMBOL'] => 'B'
        ['STAFF_ID'] => 3010120001
        ['STAFF_START_TIME'] => '13:00'
        ['STAFF_END_TIME'] => '14:00'
        ['RESERVE_COUNT'] => 1
    ) 

    [3] =>
    array(

        ['CLASS_MENU_SYMBOL'] => 'A'
        ['STAFF_ID'] => 3010120001
        ['STAFF_START_TIME'] => '10:00'
        ['STAFF_END_TIME'] => '11:00'
        ['RESERVE_COUNT'] => 1
    ) 
)

There may be many ways. for example:

$arr2=array();

foreach($arr1 as $value)//$arr1 is the given array
{
    //create a key for the new Array to make it unique
  $key=md5(serialize($value));
  $value['RESERVE_COUNT']=1;

    //if an entry already exist, add RESERVE_COUNT
  if(isset($arr2[$key]))$value['RESERVE_COUNT']+=$arr2[$key]['RESERVE_COUNT'];

  $arr2[$key]=$value;
}
print_r($arr2);
?>

returns:

Array
(
    [450489089cc95e03d6c12dedb770a2a0] => Array
        (
            [CLASS_MENU_SYMBOL] => A
            [STAFF_ID] => 3010120001
            [STAFF_START_TIME] => 09:00
            [STAFF_END_TIME] => 10:00
            [RESERVE_COUNT] => 2
        )

    [8726c974e8d060b0dfdaab0aa29f5064] => Array
        (
            [CLASS_MENU_SYMBOL] => B
            [STAFF_ID] => 3010120001
            [STAFF_START_TIME] => 13:00
            [STAFF_END_TIME] => 14:00
            [RESERVE_COUNT] => 1
        )

    [003586db1308b821483d6bebc883a932] => Array
        (
            [CLASS_MENU_SYMBOL] => A
            [STAFF_ID] => 3010120001
            [STAFF_START_TIME] => 10:00
            [STAFF_END_TIME] => 11:00
            [RESERVE_COUNT] => 1
        )

)