Inside my getNearestMeeting
method it seems to allow array with the same key
and same value
.
I'm wanting to check to see if there is key
already and meeting_id
value. As you see down below that the result from my code so far returns two keys == 6
and they have the same meeting_id
== 1812
.
What am I doing wrong?
$pupils = array("parent" => array( array ("pupil_name" => "Daniel", "pupil_id" => "5", "pupil_grade" => "87"),
array ("pupil_name" => "Daniel", "pupil_id" => "5", "pupil_grade" => "86"),
array ("pupil_name" => "Callum", "pupil_id" => "6", "pupil_grade" => "87")
));
$meetings = array( array("slot_id" => "1", "meeting_id" => "1812", "startTime" => "2016-10-07 14:30:00",
"endTime" => "2016-10-07 14:35:00", "grade_id" => "87"),
array("slot_id" => "2", "meeting_id" => "1812", "startTime" => "2016-10-07 14:35:00",
"endTime" => "2016-10-07 14:40:00", "grade_id" => "87"),
array("slot_id" => "3", "meeting_id" => "1812", "startTime" => "2016-10-07 14:40:00",
"endTime" => "2016-10-07 14:45:00", "grade_id" => "87"),
array("slot_id" => "4", "meeting_id" => "1813", "startTime" => "2016-10-07 15:05:00",
"endTime" => "2016-10-07 15:10:00", "grade_id" => "-1"),
array("slot_id" => "6", "meeting_id" => "1813", "startTime" => "2016-10-07 15:10:00",
"endTime" => "2016-10-07 15:15:00", "grade_id" => "-1"),
array("slot_id" => "9", "meeting_id" => "1813", "startTime" => "2016-10-07 15:20:00",
"endTime" => "2016-10-07 15:25:00", "grade_id" => "-1"),
array("slot_id" => "10", "meeting_id" => "1813", "startTime" => "2016-10-07 15:30:00",
"endTime" => "2016-10-07 15:35:00", "grade_id" => "88"),
array("slot_id" => "11", "meeting_id" => "1813", "startTime" => "2016-10-07 15:40:00",
"endTime" => "2016-10-07 15:45:00", "grade_id" => "88"),
array("slot_id" => "17", "meeting_id" => "1813", "startTime" => "2016-10-07 15:50:00",
"endTime" => "2016-10-07 15:50:00", "grade_id" => "88")
);
function in_array_r($array, $key, $val) {
foreach ($array as $item) {
if (key($item) == $key && isset($item[$key]) && $item[$key]["meeting_id"] == $val)
return true;
else
return false;
}
}
function getNearestMeeting($meetings){
global $pupils;
$ignore = array();
$current_pupil_id = "5";
$current_pupil_grade_id = "87";
foreach($meetings as $item){
if($current_pupil_grade_id === $item["grade_id"]){
$earliest = strtotime($item["endTime"]);
$ignore[$current_pupil_id][] = array("meeting_id" => $item["meeting_id"], "endTime" => $item["endTime"]);
break;
}
}
$counter = 0;
foreach($pupils["parent"] as $item){
$counter++;
foreach($meetings as $item2){
$lastArray = end(end($ignore));
$previousTime = strtotime($lastArray["endTime"]);
if(!in_array_r($ignore, $item["pupil_id"], $item2["meeting_id"])) {
if(isset($previousTime) && strtotime($item2["startTime"]) >= $previousTime && strtotime($item2["startTime"]) >= $earliest){
if($item["pupil_grade"] === $item2["grade_id"]){
$ignore[$item["pupil_id"]][] = array("meeting_id" => $item2["meeting_id"], "endTime" => $item2["endTime"]);
}
}
}
}
}
print_r($ignore);
}
getNearestMeeting($meetings);
result from print_r($ignore);
:
Array
(
[0] => Array
(
[5] => Array
(
[meeting_id] => 1812
[endTime] => 2016-10-07 14:35:00
)
)
[1] => Array
(
[6] => Array
(
[meeting_id] => 1812
[endTime] => 2016-10-07 14:40:00
)
)
[2] => Array
(
[6] => Array
(
[meeting_id] => 1812
[endTime] => 2016-10-07 14:45:00
)
)
)