2

我设法遍历一个表并获得表中相邻的 2 个日期之间的天数差异。

多个条目具有相同的日期,我现在拥有它,当该日期更改时,它会显示图像但是我希望它显示图像的次数与日期差异一样多

$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'];
}
4

2 回答 2

0

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

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

假设$howManydays等于 1。这意味着 0 < 1,因此循环将执行。

在循环结束时,第三部分称为 ( $i++),因此$i递增,现在等于 1。再次调用第二部分以测试条件$i < $howManydays,询问是否 1<1,否则循环将退出。

因此,如果$howManydays大于 0,则循环应该发生在$howManydays.

$howManydays = 0;如果您不希望它只触发一次,您将希望在 for 循环中删除。

for 循环

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

有点等价于 while 循环:

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

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

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

于 2012-04-19T14:35:52.793 回答
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;
}
于 2012-04-19T15:12:00.543 回答