您的位置:首页 > 编程语言 > PHP开发

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

2018-02-04 11:44 260 查看
初步实现日历的打印:

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

刚开始是这么写的:



<?php
header("content-type:text/html;charset=utf-8");

$days = 31;

echo "<table width='700px' border='1px'>";
echo "<tr>";
for($i = 1; $i <= $days; $i++){
echo "<td>{$i}</td>";
}
echo "</tr>";
echo "</table>";
?>
然而结果相差甚远:






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

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






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

修改代码如下:



$days = 31;
echo "<table width='700px' border='1px' cellspacing='0' cellpadding='1'>";
for($i = 1; $i <= $days; $i++){
echo "<tr>";
echo "<td>{$i}</td>";
echo "</tr>";
}
echo "</table>";


审查元素如下:






查看结果如下:






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

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

修改如下:



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


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








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



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


这回的结果如下:







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

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

修改如下:





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


这回的结果如下:






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

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

相关代码如下:



$k++;
if($k%2==1){
echo "<tr bgcolor='#cccccc'>";
}else{
echo "<tr>";
}
效果如下:








最后附上完整代码:



<?php
    header("content-type:text/html;charset=utf-8");

    $days = 31;
    $k=0;
    echo "<table width='700px' border='1px' cellspacing='0' cellpadding='1'>";
    for($i = 1; $i <= $days; ){
        $k++;
        if($k%2==1){
            echo "<tr bgcolor='#cccccc'>";
        }else{
            echo "<tr>";
        }
        for($j = 0; $j < 7; $j++){
            if($i>31){
                echo "<td> </td>";
            }else{
                echo "<td>{$i}</td>";
            }
            $i++;
        }
        echo "</tr>";
    }
    echo "</table>";
 ?>


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




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: