I suggest a bit's mask technique; since max(i)=96, you can represent a day by 96/8 = 12 bytes = 3 (32-bits integers).
TimeFrameA is an integer representing the first 32 15-minutes chunks(0-31), TimeFrameB represents 32-63, and TimeFrameC 64-95. If a bit is 1 the you that 15-minutes chunk is marked as "busy", 0 otherwise. It is easy to find which is the first 'busy'bit in each TimeFrame: // at least one bit is marked as busy if (TimeFrame <> 0) { mask = 0x80000000; while (mask & TimeFrame == 0) mask = mask >> 1; } Hope this helps (I think it saves both memory and time) Manu. "Bob Eldred" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > I'm working on a calendaring script right now, and am stuck on a > programmatic way to figure something out. > > Basically, the work day is broken down into 15-minute intervals, where the > value of a given interval can be figured as $hour=floor($i/4) and the > minutes can be figured as $minutes=($i%4)*15. So 32 = 8:00, 33=8:15, etc. > > Currently, it's relatively easy to pull up a day, and block out those times > that are already taken up with appointments. I'm throwing them all into an > array ($available_times). So, that array would look like: > > 32=>yes > 33=>yes > 34=>yes > 35=>yes > 36=>no > 37=>no > 38=>yes > 39=>yes > > etc, for someone who has a meeting from 9:00 to 9:30. > > Now, what I'm trying to do is check when they schedule a new meeting so that > they don't overlap their times with something that's already taken up. So, > in the array given above, if they select 8:30 as the start time, I'd like > them to be able to select 8:45 or 9:00 as the end time, but nothing later > than that, as the time from 9:00 to 9:30 is already taken up. > > And I'm stuck trying to figure out an approach to this. Preferably one that > I can throw into javascript so they can fix their errors before it ever hits > the server. > > Any help appreciated. > > Bob -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php