2011-03-03 40 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循環。有沒有人有什麼建議?此外,沒有我沒有訪問數據庫,所以我必須在PHP中。任何幫助表示讚賞,謝謝你。

+2

*當它被稱爲我想能夠選擇正確的假期* | *什麼時候被調用?什麼是輸入? – 2011-03-03 17:17:39

+1

假期不是固定的日子,例如復活節或勞動節,而是與其他事件如春分的偏移。 – 2011-03-03 17:18:00

+0

根據今天的日期,看起來他們會設置HTML頁面的背景或其他東西。讓我們來問一下:有多少事件會發生?如果不是太多,那麼這件事的效率/美感呢?如果您要添加很多,可能使用用戶定義的排序函數按日期排序並嘗試對數組執行搜索功能? (只是一般的想法。)哦,如果你想要一個數據庫(允許在日期字段簡單搜索)沒有專用服務器嘗試SQlite。 – Guttsy 2011-03-03 17:21:38

回答

0

foreach對於數組很好。您可能希望直接在數組中使用unix時間戳,因爲總是使用strtotime不是最快的方式。

你也可以做的是將數組分成幾個月,每個月都有一個子數組。這樣你就不必遍歷所有的假期,只需要顯示特定的月份。

+0

非常感謝您的建議,各地的好主意,我特別喜歡直接使用unix時間戳,可以減少函數調用。我很感激幫助。 – Greedfeed 2011-03-04 15:10:33

相關問題