開始日と終了日の間に日付一覧(日付リスト)をPHPで取得する方法

開始日として2011/01/29があり、終了日が2011/02/02として、
その間の日付

2011/01/29
2011/01/30
2011/01/31
2011/02/01
2011/02/02

というような一覧を取得したい場合のコード。
Zend_Dateを使ってます。

$startyear = "2011";
$startmonth = "01";
$startday = "29";
$endyear = "2011";
$endmonth = "02";
$endday = "02";
$startdate = "20110129";
$enddate = "20110202";

$now = new Zend_Date();

//開始日と終了日が同じ日だった場合を考慮したコード。もっといい方法あるかもしれないけど。
$exist[$startdate] = 1;
$exist[$enddate] = 1;

while( strcmp($startdate,$enddate)!=0 )
{
$exist[$startdate] = 1; //存在OKということで記録

$now->set($startday.$startmonth.$startyear", Zend_Date::DATES);

$now->add( 1, Zend_Date::DAY );
$date = $now->toArray();

$startyear = $date["year"];
$startmonth = sprintf("%02d",$date["month"]);
$startday = sprintf("%02d",$date["day"]);
$startdate = $startyear.$startmonth.$startday;
}


これで、
$existという連想配列に
$exist["20110129"] = 1;
$exist["20110130"] = 1;
$exist["20110131"] = 1;
$exist["20110201"] = 1;
$exist["20110202"] = 1;
というように入ってくる。



コメントをどうぞ