This post almost answered this question for me, but I have a specific need and didn’t find what I sought there. This lies right outside my experience; couldn’t quite wrap my head around it, so all I really need is a point in the right direction.
Let’s say I have an array as follows:
array(5) { [0]=> "2013-02-18 05:14:54" [1]=> "2013-02-12 01:44:03" [2]=> "2013-02-05 16:25:07" [3]=> "2013-01-29 02:00:15" [4]=> "2013-01-27 18:33:45" }
I would like to have a way to provide a date (“2013-02-04 14:11:16”, for instance), and have a function determine the closest match to this in the array (which would be “2013-02-05 16:25:07” in this case).
I’d appreciate any tips. Thanks! 🙂
Advertisement
Answer
I may not have the best naming conventions, but here goes.
I calculate the intervals between the array of dates and the given date. I then do a sort, to find the “smallest” difference.
$dates = array ( '0'=> "2013-02-18 05:14:54", '1'=> "2013-02-12 01:44:03", '2'=> "2013-02-05 16:25:07", '3'=> "2013-01-29 02:00:15", '4'=> "2013-01-27 18:33:45" ); function find_closest($array, $date) { //$count = 0; foreach($array as $day) { //$interval[$count] = abs(strtotime($date) - strtotime($day)); $interval[] = abs(strtotime($date) - strtotime($day)); //$count++; } asort($interval); $closest = key($interval); echo $array[$closest]; } find_closest($dates, "2013-02-18 05:14:55");