我设法循环遍历一张桌子,并获得表格中彼此相邻的两个日期之间的天数差异。
多个条目具有相同的日期,我现在知道当该日期发生变化时,它会显示一个图像,但是我想让它显示图像的次数与日期的差异一样多
$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'];
}
答案 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;
}