note 84350 deleted from function.date by tularis

From: Date: Thu, 09 Feb 2012 21:00:25 +0000
Subject: note 84350 deleted from function.date by tularis
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-186003@lists.php.net to get a copy of this message
Note Submitter: con_tobe at yahoo dot com ---- Doing $w-- for months ending on Sat won't hurt (i.e. if you're counting weeks as is the case below), but halocastle's code is perfectly fine as is and quite fast. He/she uses $w as a key for the $weeks array. "Halo" does this BEFORE $w++, so $w-- is superfluous as the loop has already ended. For May, 2008, I get 5 weeks as expected... Array ( [1] => Array ( [4] => 1 [5] => 2 [6] => 3 ) [2] => Array ( [0] => 4 [1] => 5 ------------OMITTED----------------- [4] => 22 [5] => 23 [6] => 24 ) [5] => Array ( [0] => 25 [1] => 26 [2] => 27 [3] => 28 [4] => 29 [5] => 30 [6] => 31 ) ) I guess the one pit-fall of the code is if you overlap months, say the following year, then $m-- makes perfect since...I think (haven't gotten that far...yet). I modified "Halo's" code to include months, too (this is from a snippet that produces a three month calendar, hence the outer $months loop, omitted here). <?php $m = date('m'); $Y = date('Y'); // for() {months loop omitted $var_date = mktime(0, 0, 0, $m, 1, $Y); $month_name = date('F', $var_date); $months[$month_name]['DAYS'] = date('t', $var_date); $months[$month_name]['FIRST_DAY'] = date('w', $var_date); //} foreach($months as $month => $key) { $weeks = array(); for($i = 1, $j = $key['FIRST_DAY'], $w = 1;$i <= $key['DAYS'];$i++) { $weeks[$w][$j] = $i; $j++; if($j == 7) { $j = 0; $w++; } } $months[$month]['WEEKS'] = $weeks; } ?> Enjoy!

« previous php.notes (#186003) next »