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
)
)