简单的PHP算法
发表于2012-09-20 10:09:49阅读49590次
- <?php
- /**
- * 日历
- *
- * Copyright(c) 2007 by 陈毅鑫(深空). All rights reserved
- * To contact the author write to {@link mailto:shenkong@php.net}
- * @author 陈毅鑫(深空)
- */
- if (function_exists('date_default_timezone_set')) {
- date_default_timezone_set('Asia/Chongqing');
- }
- $date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d');
- $date = getdate(strtotime($date));
- $end = getdate(mktime(0, 0, 0, $date['mon'] + 1, 1, $date['year']) - 1);
- $start = getdate(mktime(0, 0, 0, $date['mon'], 1, $date['year']));
- $pre = date('Y-m-d', $start[0] - 1);
- $next = date('Y-m-d', $end[0] + 86400);
- $html = '<table border="1">';
- $html .= '<tr>';
- $html .= '<td><a href="' . $PHP_SELF . '?date=' . $pre . '">-</a></td>';
- $html .= '<td colspan="5">' . $date['year'] . ';' . $date['month'] . '</td>';
- $html .= '<td><a href="' . $PHP_SELF . '?date=' . $next . '">+</a></td>';
- $html .= '</tr>';
- $arr_tpl = array(0 => '', 1 => '', 2 => '', 3 => '', 4 => '', 5 => '', 6 => '');
- $date_arr = array();
- $j = 0;
- for ($i = 0; $i < $end['mday']; $i++) {
- if (!isset($date_arr[$j])) {
- $date_arr[$j] = $arr_tpl;
- }
- $date_arr[$j][($i+$start['wday'])%7] = $i+1;
- if ($date_arr[$j][6]) {
- $j++;
- }
- }
- foreach ($date_arr as $value) {
- $html .= '<tr>';
- foreach ($value as $v) {
- if ($v) {
- if ($v == $date['mday']) {
- $html .= '<td><b>' . $v . '</b></td>';
- } else {
- $html .= '<td>' . $v . '</td>';
- }
- } else {
- $html .= '<td> </td>';
- }
- }
- $html .= '</tr>';
- }
- $html .= '</table>';
- echo $html;
- ?>