2012-03-19 46 views
1

我有以下的PHP函數,創建所有的日子的開始日期和結束日期之間的數組:PHP dateRange函數:如何在var中保存返回值?

function dateRange($first, $last, $step = '+1 day', $format = 'Y-m-d') { 

$dates = array(); 
$current = strtotime($first); 
$last = strtotime($last); 

while($current <= $last) { 

    $dates[] = date($format, $current); 
    $current = strtotime($step, $current); 
    } 

    return $dates; 
} 

然後我用:

if (in_array($this_date,dateRange($start_date, $end_date))) {... do sth ...} else {... do sth else...}

現在我覺得最好的從數據庫中讀取日期時,在一個while循環中實現它。在數據庫中有幾個日期時間,我想在讀取行時創建一個包含所有行的數組,最後檢查in_array($ this_array_contains_all_date_ranges_from_db)。

如果我在使用dateRange($start_date,$end_date)後嘗試打印$ array,它只返回一個空的「Array」。但是,如果我使用上面提到的if,它工作正常。另外,我試着$this_date_range=dateRange($start_date,$end_date);但它也是空的......我不太瞭解函數,所以我無法弄清楚如何創建一個將包含所有日期範圍的變量?

非常感謝您提前! :)

回答

3

當你說「print $ array」時,你在做字面print($array)?獲取Array作爲預期的輸出 - 您不能print()數組。您必須使用print_r()var_dump()。兩者都會將數據結構轉儲爲文本格式。

+0

哦,你是天才,謝謝Marc! :)我不知道,謝謝,現在這個作品... :) – Chris 2012-03-19 15:31:43

+0

然而,它適用於返回一個變種,例如$ total_dates = dateRange($ start_date,$ end_date),但是,$ total_dates。= ...不起作用!?它只需要最後一個值...我怎樣才能給它添加多個值呢? – Chris 2012-03-19 15:39:33

+0

如果你要返回一個數組,你必須使用數組符號,而不是字符串concatenation:'$ total_dates [] = dateRange()',或array_merge()等等。 – 2012-03-19 15:40:32