2009-11-05 5 views
2

다음 사용 가능한 시간 슬롯을 찾으려면 스크립트 작성에 도움이 필요합니다.PHP - 다음 사용 가능한 시간 슬롯을 찾으십시오.

를 Ex : 사람 A가 약속을 원하고 가능한 시간 슬롯의 일상은, 그래서 오후 9시

오전 9시, 정오 오후 4 오후 6시이며, 나는 기존 데이터를 확인하고 다른 약속을 위해 예약 시간 슬롯을 비교해야하고 다음 사용할 수 찾으십시오.

$apts = array(
     'Person 1' => '1/1/09-9:00', 
     'Person 2' => '1/1/09-12:00', 
     'Person 3' => '1/1/09-18:00', 
     'Person 4' => '1/1/09-21:00' 
     ); 

그래서, 나는 $ APTS에 사람 A의 다음 번 슬롯을 찾을 필요하고, 오후 4 (1/1/09-16 : 00)을 마련한다. 그 다음 사람 B를 따라오고 1/1/09에 더 이상 시간 슬롯이 없으므로 그/그녀의 다음 시간대는 '1/2/09-9 : 00'이어야합니다. 따라서 다음 날 9시에 가십시오.

확인 하시겠습니까? 감사합니다.

+0

가능한 시간대를 어떻게 지정합니까 (예 : 공휴일 등을 고려하여)? 즉, 해당 정보가있는 다른 배열이 있습니까? 아니면 그냥 코드를 입력 할 계획입니까? – jheddings

+0

특수한 경우 등을 고려하지 않고 코드를 입력하십시오. – Shawn

+0

데이터베이스에서 쉽게 해결할 수있는 문제와 비슷합니다. – Myles

답변

1

데이터베이스는 의미 론적으로 말하면 최상의 솔루션입니다. 원래 PHP 유일한 해결책에

SELECT time FROM table WHERE person_id = 0 AND time > 1234567890 LIMIT 1; 

키핑을 : 당신이 열 timetime는 UNIX 시간 (다른 형식하지만 쉽게 적응할 수)로 인코딩됩니다 person_id, 하나 개의 테이블을 사용하려면, 당신은 단지 실행할 수 있습니다 의미 론적으로 합리적인 해결책은 다음 사용 가능한 시간 슬롯을 검색하기 위해 while 루프를 실행하는 것일 수 있습니다. 물론

$timeslot = $desired_timeslot; 
while(in_array($timeslot, $apts)) { 
    $timeslot = get_next_timeslot($timeslot); 
} 
return $timeslot; 

, 당신은 당신의 인코딩/구성 방법에 맞게 기능 get_next_timeslot()를 정의해야합니다.

+1

데이터베이스에서 유닉스 타임 스탬프를 사용하지 않으면 일반적인 쿼리를 실행하기가 어렵습니다. UNIX 시간 소인으로 적절한 날짜 시간을 선택하려면 UNIX_TIMESTAMP (column)을 사용하십시오. – Kris

관련 문제