2011-03-03 3 views
1

나는 다음과 같이 기본적으로 작동하는 서로 다른 시간대와 휴일의 다차원 배열이 포함 된 휴가 클래스가 있습니다PHP에서 공휴일을 선택하는 방법은 무엇입니까?

$this->bgArray = array('background' => array(
            array( 'name' => 'SuperBowl', 
              'start' => '06 Feb 2011', 
              'end' => '07 Feb 2011'), 

            array( 'name' => 'presidentsday2011', 
              'start' => '21 Feb 2011', 
              'end' => '22 Feb 2011'), 

            array( 'name' => 'marchmadness6', 
              'start' => '01 Mar 2011', 
              'end' => '02 Mar 2011'))); 

을하고 그것은 내가 바로 휴가를 선택하고 다음 코드를 실행할 수 있도록하려면 호출 될 때 현재 나는대로 설정하는 것이있다 :이 코드는 모두 큰 노력

foreach($holidays->bgArray['background'] AS $holiday) 
    { 
     if (($holidays->today >= strtotime($holiday['start']) && $holidays->today < strtotime($holiday['end']) || (isset($_REQUEST[$holiday['name']])))) 
     { 
      $background = $holiday['name']; 
     } 
    } 

    $this->set_background($background); 

하지만 개인적으로는 foreach 루프에 비해이 코드를 할 수있는 더 좋은 방법이 느낌. 누구든지 어떤 제안이 있습니까? 또한 DB에 액세스 할 필요가 없으므로 PHP 내에서이 모든 것을 수행해야합니다. 어떤 도움이라도 고맙습니다, 고마워요.

+2

*라고하면, 적당한 휴일을 선택할 수 있도록하고 싶다 * | * 언제 *라고 부릅니까? 입력은 무엇입니까? –

+1

정해진 날짜가 아닌 휴일은 어떻게됩니까? 부활절, 또는 노동절 이었지만 오히려 봄철 춘분과 같은 다른 사건으로부터 약간 상쇄되었습니다. –

+0

오늘 날짜에 따라 HTML 페이지 등의 배경을 설정하는 것처럼 보입니다. 이것에 대해서 물어 봅시다 : 얼마나 많은 사건이있을 것입니까? 너무 많지 않다면,이 문제의 효율성/아름다움은 무엇입니까? 많이 추가하려면 사용자 정의 정렬 함수를 사용하여 날짜별로 정렬하고 배열에서 검색 함수를 사용해보십시오. (일반적인 아이디어입니다.) 아, 전용 데이터베이스없이 데이터베이스 (날짜 필드에서 간단한 검색이 가능)를 원하면 SQlite를 사용해보십시오. – Guttsy

답변

0

배열의 경우 foreach가 적합합니다. 항상 strtotime을 사용하는 것이 가장 빠른 방법이 아니기 때문에 배열에서 유닉스 타임 스탬프를 직접 사용할 수 있습니다.

배열을 월로 분할하여 매월 부분 배열을 만드는 것입니다. 그렇게하면 모든 휴일에 대해 반복하지 않아도되지만이 달의 특정 항목 만 표시됩니다.

+0

조언을 해주셔서 대단히 감사합니다. 특히 유닉스 타임 스탬프가 직접적으로 마음에 들었습니다. 함수 호출을 줄일 수있었습니다. 도움에 감사드립니다. – Greedfeed

관련 문제