我知道我可以像这样用整个整数做一个正常的循环
for($i=0;$i<10;$i++)
{
echo $i;
}
问题:
我想循环一个不是整数而是浮点时间(45分钟)的循环。我希望结果是这样的:
0.45
1.30
2.15
3.00
3.45
...
PHP中是否有任何帮助函数来实现这一点?
阅读评论并看到您实际上想要使用时间,您甚至可以DateTime
在 for 循环中使用对象
这是一些示例代码:
for (
$d = new DateTime('00:00'), // Initialise DateTime object .
$i = new DateInterval('PT45M'); // New 45 minute date interval
$d->format('H') < 10; // While hours (24h) less than 10
$d->add($i) // Add the interval to the DateTime object
)
{
echo $d->format("H:i\n");
}
您可以简单地在循环中使用浮点数。$i++
在循环的最后部分意味着将计数器增加1
. 只需将其更改为即可0.45
。
for($i=0;$i<10;$i=$i + 0.45)
{
echo $i;
}
// 编辑
正如许多人指出的那样,浮点精度存在固有问题。上面的例子应该适用于小数字 $i < 100
,但当数字变大时可能会出现问题。
for($i=0;$i<10;$i += 0.45)
{
echo $i;
}
像这样的东西?
你可以简单地使用
for($i=0.0;$i<10.0;$i=$i+0.45)
{
echo $i;
}
我不确定我是否会使用浮点值来控制循环本身,特别是考虑到它们不精确的倾向:-)
由于您似乎有一个公式,您可以简单地在循环中使用公式:
for ($i = 0; $ < 10; $i++) {
$num = 0.45 + $i * 0.85;
echo $num;
}
这允许使用整数控制循环,并简单地为您提供基于该整数的浮点值。
我不会依赖浮点数。原因是四舍五入。
你通常做的是使用一个int,然后除。
for($i=0, $j=0; $i < $MAX; $i += 45, $j = $i / 100)
{
echo $j;
}
也许是这样的:
for ($i=1; $i<=10; $i++) {
echo $i * 0.45."<br />";
}