<?php
$dates[] = array("date" => "2016-02-18 02:00:00", "duration" => "600"); // 10 mins
$dates[] = array("date" => "2016-02-18 02:05:00", "duration" => "300"); // 5 mins
$dates[] = array("date" => "2016-02-18 02:10:00", "duration" => "600");
$dates[] = array("date" => "2016-02-18 02:15:00", "duration" => "300");
$dates[] = array("date" => "2016-02-18 02:20:00", "duration" => "600");
$dates[] = array("date" => "2016-02-18 02:25:00", "duration" => "300");
$dates[] = array("date" => "2016-02-18 02:30:00", "duration" => "600");
$alreadyChosenDates[] = array("date" => "2016-02-18 02:05:00", "duration" => "300"); // 10 mins
function returnClosestTime($alreadyChosenDates, $dates){
// Set an array called $closestTime that has the time difference and the key
$closestTime = [null, null];
// Check each element in array
foreach($dates as $key => $date){
foreach($alreadyChosenDates as $chosenDates){
// Calculate difference between already chosen dates array and the dates array
$diff = (strtotime($chosenDates["date"]) + $chosenDates["duration"]) - strtotime($date["date"]);
if($diff < 0) $diff = $diff * -1;
// If $closestTime is empty, populate it
if($closestTime[0] === null) $closestTime = [$diff, $key];
// If $closestTime isn't empty and the current date's time difference
// is smaller, populate $closestTime with the time difference and key
else if($diff < $closestTime[0]) $closestTime = [$diff, $key];
}
}
return $dates[$closestTime[1]];
}
$alreadyChosenDates[] = returnClosestTime($alreadyChosenDates, $dates);
echo "<pre>";
print_r($alreadyChosenDates);
echo "</pre>";
- Output for 5.6.0 - 5.6.27, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.7
- <pre>Array
(
[0] => Array
(
[date] => 2016-02-18 02:05:00
[duration] => 300
)
[1] => Array
(
[date] => 2016-02-18 02:10:00
[duration] => 600
)
)
</pre>
preferences:
152.6 ms | 404 KiB | 190 Q