查找2个日期之间的差异,并根据差异迭代图像

时间:2012-04-19 14:32:08

标签: php mysql image date

我设法循环遍历一张桌子,并获得表格中彼此相邻的两个日期之间的天数差异。

多个条目具有相同的日期,我现在知道当该日期发生变化时,它会显示一个图像,但是我想让它显示图像的次数与日期的差异一样多

$sql = mysql_query("SELECT * FROM Films_Info") 
 or die(mysql_error()); 

 $last_value = null;

while ($row = mysql_fetch_assoc($sql)) {

  if (!is_null($last_value)) {
  $a = new DateTime($row['FilmRelease']);
  echo "<p>".$row['FilmName']."</p>";
  $interval = $a->diff(new DateTime($last_value));
  //echo $interval->format('%d days');
  $i = 0;

}
$howManydays = $interval->days;

for ( $i; $howManydays; $i++) {
    echo "<img src=\"day.jpg\" />";
    $howManydays = 0;

}

  $last_value = $row['FilmRelease'];
}

2 个答案:

答案 0 :(得分:0)

for ( $i = 0; $i < $howManydays; $i++)第二个是条件语句,告诉循环何时应该停止。

for循环中的第一部分,其中$i = 0将变量$i初始化为0,然后测试条件$i < $howManydays

假设$howManydays等于1.这意味着0&lt; 1,所以循环将执行。

在循环结束时,第三个部分被调用($i++),因此$i递增,现在等于1.再次调用第二个部分来测试条件$i < $howManydays这就是询问是否1&lt; 1它不是,所以循环将退出。

因此,如果$howManydays大于0,则循环应该发生$howManydays中的整数。

如果你不希望它只触发一次,你会想要删除for循环中的$howManydays = 0;

for循环

for ( $i = 0; $i < $howManydays; $i++){
  // ...
}

有点等同于while循环:

$i = 0;
while ( $i < $howManydays ){
  // ...
  $i++;
}

http://php.net/manual/en/control-structures.for.php了解更多信息

在上面的代码中,您还应该检查是否设置了间隔。如果只需要一个间隔,你应该只做一次if而不是一段时间。

答案 1 :(得分:0)

你可以在间隔上做一个简单的划分并多次打印出图像

$last_value_u   = $last_value->format('U');
$a_u            = $a->format('U');

$interval       = $a_u - $last_value_u;

$image_count    = intval($interval/86400);

for($i=0;$i<$image_count;$i++)
    echo "<p><img src=\"day.jpg\" /></p>";

更新

另一种选择是循环间隔:

for($i=$last_value_u;$i<$a_u;)
{
    if(intval(($a_u - $i)/86400) == X)
    {
        // run special code for specific day
    }
    else
    {
        // run code for every other day
    }
    $i+=86400;
}