比如说有一个变量为一个日期$start_date="2011-11-02";      //2011年11月2号
$end_date=date('Y-m-d');       //今天的日期想用循环做一个表格:
2011-11-02   --   2011-11-08
2011-11-09   --   2011-11-15
.
.从2011-12-02那天算起,每一周都生成一行.一直到最后一行的结束日期不超过今天的日期,如果不够一周的话,那最后一行不显示.高手麻烦帮忙..

解决方案 »

  1.   

    使用time()吧,它是一个十位的整型值,那就可以很方便的相减,然后如果能被7整除就换行。这就可以了。
      

  2.   

    不知道是不是樓主想要的結果.<?php 
    $stringFormat = 'Y-m-d';
    $startTime = '2011-11-02';
    $endTime = date($stringFormat);
    $days = (strtotime($endTime) - strtotime($startTime))/24/3600;
    ?>
    <table width="700" border="0" cellspacing="0" cellpadding="0">
    <?php
    for($i=0;$i<$days/7;$i++)
    {
    ?>
      <tr align="center">
        <?php 
    for($k=0;$k<7;$k++)
    {
    $time = date($stringFormat,strtotime($startTime.' + '.($k+$i*7).' day'));
    if(strtotime($time) - strtotime($endTime) > 0)
    break;
    ?>
    <td><?=$time;?></td>
    <?php 
    }
    ?>
      </tr>
    <?php 
    }
    ?>
    </table>
      

  3.   

    或许我应该说的明白点,那个不应该是字符串,应该是一个变量,但这里为了举例,才做成字符串的.
    起始时间为变量,类型是日期. 以每一周(7天)做成一个<td>.由于日期范围包括了当天那一日, 所以但用strtotime这一函数时,一周的算法应该是60*60*24*6.
      

  4.   

    $start_date="2011-11-02";      //2011年11月2号
    $end_date=date('Y-m-d');       //今天的日期$d = 7;while(($start_date = date('Y-m-d', strtotime("$d day $start_date")))<= $end_date) {
      echo date('Y-m-d', strtotime("-$d day $start_date")),
      ' --- ', date('Y-m-d', strtotime("-1 day $start_date")), PHP_EOL;
    }2011-11-02 --- 2011-11-08
    2011-11-09 --- 2011-11-15
    2011-11-16 --- 2011-11-22
    2011-11-23 --- 2011-11-29
    2011-11-30 --- 2011-12-06
    2011-12-07 --- 2011-12-13
      

  5.   

    感谢感谢...请教一下,PHP_EOL这个起的是什么作用..
      

  6.   

    PHP_EOL php 常量, 其值为操作系统的回车换行符
    你根据需要换乘你需要的
      

  7.   

    蛋疼。也写一个。
    for ($start_date = strtotime("2011-11-02");$start_date < time()-86400*7;$start_date+=86400*7)
    echo date('Y-m-d', $start_date), ' -- ', date('Y-m-d', $start_date+86400*6), "<br />";