PHP-for循环初步实现日历表格思想

初步实现日历的打印:

   初步先认为日历有31天,并且第一天从第一个格开始,最后奇数行用灰色填充。

刚开始是这么写的:

";
	echo "";
	for($i = 1; $i <= $days; $i++){
		echo "{$i}";
	}
	echo "";
	echo "";
 ?>
然而结果相差甚远:


一个月有四周,每周是七天,也就是会有五行七列,现在是1行31列,这谁受得了?

这是把所有的信息全都写在了一个里边,即一行,查看元素如图:

PHP-for循环初步实现日历表格思想_第1张图片

如果把放到for循环里边,也就是会每一次循环输出一个,貌似这样的话是每个数占一行,

修改代码如下:

     $days = 31;
	echo "";
	for($i = 1; $i <= $days; $i++){
	    echo "";
	    echo "";
	    echo "";
	}
	echo "
{$i}
";

审查元素如下:

PHP-for循环初步实现日历表格思想_第2张图片

查看结果如下:

PHP-for循环初步实现日历表格思想_第3张图片

我们想要的结果是什么?五行七列的,这又是什么鬼?

想一想,我们是不是再加个for循环来控制列呢?

修改如下:

for($i = 1; $i <= $days; $i++;){
		echo "";
		for($j = 0; $j < 7; $j++){
			echo "{$i}";
		}
		echo "";
	}

查看结果和审查元素竟然是如下这个样子 !好纠结。

PHP-for循环初步实现日历表格思想_第4张图片


可以想一下,看for循环的话是有31行7列是不是?即每一列都是1-31的内容,也就是我们现在看到的结果,怎么改呢?我们把$i++不在那里放,放到别处试试,如下:

for($i = 1; $i <= $days; ){
		echo "";
		for($j = 0; $j < 7; $j++){
			echo "{$i}";
			$i++;
		}
		echo "";
}


这回的结果如下:

PHP-for循环初步实现日历表格思想_第5张图片

看样子有点接近了是吧,不过好像还是不对啊,我们不是限制在31之内的吗?怎么会跑出35来了?

我们这样如何:加一个判断,如果$i>35我们就输出一个空格,否则就正常输出。

修改如下:


for($i = 1; $i <= $days; ){
		echo "";
		for($j = 0; $j < 7; $j++){
			if($i>31){
				echo " ";
			}else{
				echo "{$i}";
			}
			$i++;
		}
		echo "";
}

这回的结果如下:

PHP-for循环初步实现日历表格思想_第6张图片

好像是我们要的结果了,下边我们就是填充颜色了,这个简单多了。

我们给定一个$k=0,然后循环里边$k++,这样第一个循环就是第一行了,这时我们针对进行颜色的填充,需要借助if...else判断。

相关代码如下:

                $k++;
		if($k%2==1){
			echo "";
		}else{
			echo "";
		}
效果如下:

PHP-for循环初步实现日历表格思想_第7张图片


最后附上完整代码:

";
    for($i = 1; $i <= $days; ){
        $k++;
        if($k%2==1){
            echo "";
        }else{
            echo "";
        }
        for($j = 0; $j < 7; $j++){
            if($i>31){
                echo " ";
            }else{
                echo "{$i}";
            }
            $i++;
        }
        echo "";
    }
    echo "";
 ?>


注:仅是自己总结自己的想法而已。



你可能感兴趣的:(PHP,php)