開始日と終了日および間隔(日、週、月、年)を受け入れ、その範囲の日、週、月、または年ごとに配列を返す既存のヘルパー関数を見つけようとしています。
それがそこにあるなら、既存のものを見つけたいです。
ありがとう!
大まかなスタートは次のとおりです。
function makeDayArray( $startDate , $endDate ){
// Just to be sure - feel free to drop these is your sure of the input
$startDate = strtotime( $startDate );
$endDate = strtotime( $endDate );
// New Variables
$currDate = $startDate;
$dayArray = array();
// Loop until we have the Array
do{
$dayArray[] = date( 'Y-m-d' , $currDate );
$currDate = strtotime( '+1 day' , $currDate );
} while( $currDate<=$endDate );
// Return the Array
return $dayArray;
}
PHP 5.3以降では、そのためにDateIntervalクラスを使用できます。
これと同じものを探していたときに、このスレッドを見つけました。これが私が思いついたもので、うまくいきました。
私は、電子メールアドレスとそれらが電子メールリストを購読したときのUNIXタイムスタンプのデータベースを持っていました。毎週の購読率を知りたかったのです。
$startdate = 1325376000; // Jan 1 2012
//$startdate = 1293926400; // Jan 1 2011
$currentstart = $startdate;
$currentend = $startdate + 604800; // 604800 = 1 week
while($currentend < 1356998400) {
$sql = "SELECT * FROM the_table WHERE unixdate > $currentstart AND unixdate <= " . ($currentstart + 604800 - 1);
$result = mysql_query($sql);
echo date('D Y-m-d', ($currentstart)) . " - " . date('D Y-m-d', ($currentstart + 604800 - 1)) . ": <strong>" . mysql_num_rows($result) . "</strong><br />";
$currentstart = $currentend;
$currentend += 604800;
}
604800番号を変更して、30日または365日、あるいは毎日などの間隔をとることができます。
私はこれがきれいではないと確信しています-私は最高のコーダーではありません-しかし、私は私の後ろに来る人々のために私の解決策を残さなければなりませんでした。