Shawn McKenzie wrote:
> tedd wrote:
>> Hi gang:
>>
>> Anyone have/know a routine that will sort an array of times?
>>
>> For example, a function that would take an array like this:
>>
>> time[0] ~ '1:30pm'
>> time[1] ~ '7:30am'
>> time[2] ~ '12:30pm'
>>
>> and order it to:
>>
>> time[0] ~ '7:30am'
>> time[1] ~ '12:30pm'
>> time[2] ~ '1:30pm'
>>
>>
>> Cheers,
>>
>> tedd
>>
>>
> 
> Not tested:
> 
> function time_sort($a, $b)
> {
>     if (strtotime($a) == strtotime($b)) {
>         return 0;
>     }
>     return (strtotime($a) < strtotime($b) ? -1 : 1;
> }
> 
> usort($time, "time_sort");
> 
Well, I just thought, since the strtotime() uses the current timestamp
to calculate the new timestamp, if you only give it a time then the
returned timestamp is today's date with the new time you passed.  If you
had a large array and the callback started at 23:59:59 then you could
end up with some times from the date it started and some from the next
day, which of course would not be sorted correctly with respect to times
only.  So, this might be better (not tested):


function time_sort($a, $b)
{
    static $now = time();

    if (strtotime($a, $now) == strtotime($b, $now)) {
        return 0;
    }
    return (strtotime($a, $now) < strtotime($b, $now) ? -1 : 1;
}


-- 
Thanks!
-Shawn
http://www.spidean.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to