Ok I'm seriously stuck, I've been working on array merge by finding id from array .I want to find SubjectID from array if it found then merge both array and calulate actual hour in from time and to time(calculate timing in between). my array code.. Actual Array:
Array
(
[eventlist] => Array
(
[0] => Array
(
[allDay] => false
[id] => {83AE8778-A604-46F1-94BE-A045F2A9B548}
[SubjectID] => 2
[RoomID] => 2
[FromTime] => 00:30
[ToTime] => 01:45
[PlottingType] => Research
)
[1] => Array
(
[allDay] => false
[id] => {2B1F7B32-6D44-4700-8C50-F030B94D41F6}
[RoomID] => 2
[FromTime] => 00:00
[ToTime] => 00:45
[PlottingType] => Research
)
[2] => Array
(
[allDay] => false
[id] => {83AE8778-A604-46F1-94BE-A045F2A9B548}
[SubjectID] => 3
[RoomID] => 2
[FromTime] => 00:30
[ToTime] => 01:45
[PlottingType] => Admin
)
)
)
expected output:
Array
(
[eventlist] => Array
(
[0] => Array
(
[Time] => 01:15
[PlottingType] => Research
)
[2] => Array
(
[Time] => 00:15
[PlottingType] => Admin
)
)
)
please suggest me appropriate solution..
Well you should foreach through all of them
$array; // Your array
$new_array = array(); // Empty new array
$new_array['eventlist'] = array();
foreach($array['eventlist'] as $inner) {
if(isset($inner['SubjectID']) {
// Work out your maths for time difference and put it into $interval
$fromtime = new DateTime($inner['FromTime']);
$totime = new DateTime($inner['ToTime']);
$interval = $fromtime->diff($totime);
$interval = $interval->format('%H:%i');
$new_inner = array(
"Time" => $interval,
"PlottingType" => $inner['PlottingType']
);
array_push($new_array['eventlist'], $new_inner);
}
}
While untested. This SHOULD work with PHP 5.4+