2012-03-19 7 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を出力しようとすると、空の "配列"だけが返されます。しかし、上記のifを使用すると、うまく動作します。また、私は$this_date_range=dateRange($start_date,$end_date);でもそれも空でした...私は関数に熟練していないので、どのようにしてすべての日付範囲を含むvarを作成できますか?

ありがとうございます! :)

答えて

3

"print $ array"と言うとき、リテラルprint($array)をやっていますか? Arrayからの出力が期待されています。print()の配列を使用することはできません。 print_r()またはvar_dump()を使用する必要があります。どちらもデータ構造をテキスト形式にダンプします。

+0

ああ、あなたは天才です、ありがとうございました! :)私は、ありがとう、これは今動作していることを知らなかった... :) – Chris

+0

しかし、それは1つのvarを返すために動作します。 $ total_dates = dateRange($ start_date、$ end_date)、ただし、$ total_dates。= ...は動作しません!それは最後の値を取るだけです...それに複数の値を追加するにはどうしたらいいですか? – Chris

+0

配列を返す場合は、文字列連結ではなく、配列表記を使用する必要があります。 '$ total_dates [] = dateRange()'、またはarray_merge()などです。 –