【问题标题】:For loop incrementing time by 45 minutesFor 循环将时间增加 45 分钟
【发布时间】:2012-11-22 03:21:21
【问题描述】:

我知道我可以用这样的整数做一个正常的循环

for($i=0;$i<10;$i++)
{
   echo $i;
}

问题:
我想循环一个不是整数而是 floats 次(45 分钟)的循环。我希望结果是这样的:

0.45
1.30
2.15
3.00
3.45
...

PHP 中有没有帮助函数来实现这一点?

【问题讨论】:

  • 你试过了吗? PHP 文档没有说明不支持 for 循环中的浮点数。
  • 那些应该是时代吗?
  • 乘以100,循环再除。
  • ...那你为什么要假装他们是花车?
  • 一分钟不是一小时的 1/100,因此您不想在每个循环中添加 0.45。

标签: php for-loop


【解决方案1】:

阅读 cmets 并看到您确实想要处理时间,您甚至可以在 for 循环中使用 DateTime 对象

下面是一些示例代码:

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");
}

【讨论】:

    【解决方案2】:

    您可以简单地在循环中使用浮点数。循环最后部分的$i++ 表示将计数器增加1。只需将其更改为 0.45 即可。

    for($i=0;$i<10;$i=$i + 0.45)
    {
       echo $i;
    }
    

    // 编辑

    正如许多人所指出的,浮点精度存在固有问题。上面的示例应该适用于小数字$i &lt; 100,但当数字变大时可能会出现问题。

    【讨论】:

    • @Baba: 无法修复,因为问题本身已经坏了。
    • @IgnacioVazquez-Abrams .. 我同意你的看法
    【解决方案3】:
    for($i=0;$i<10;$i += 0.45)
    {
       echo $i;
    }
    

    这样的?

    【讨论】:

    • 你有与Kami相同的代码错误我怀疑复制和粘贴
    • 对不起,这段代码没有任何错误,它是正确的语法:)
    • 出于教育目的,请查看输出中的codepad.org/9D4pgW63776
    • Ouuu..我明白了,谢谢,我忘记了这个php计算功能:)
    【解决方案4】:

    我不确定我是否会使用浮点值来控制循环本身,尤其是考虑到它们不精确的倾向 :-)

    由于您似乎有一个公式,您可以简单地在循环中使用该公式:

    for ($i = 0; $ < 10; $i++) {
       $num = 0.45 + $i * 0.85;
       echo $num;
    }
    

    这允许使用整数控制循环,并简单地根据该整数为您提供浮点值。

    【讨论】:

      【解决方案5】:

      你可以简单使用

      for($i=0.0;$i<10.0;$i=$i+0.45)
      {
         echo $i;
      }
      

      【讨论】:

        【解决方案6】:

        我不会依赖浮点数。原因是四舍五入。

        你通常做的是使用一个 int,然后除。

        for($i=0, $j=0; $i < $MAX; $i += 45, $j = $i / 100)
        {
            echo $j;
        }
        

        【讨论】:

          【解决方案7】:

          可能是这样的:

          for ($i=1; $i<=10; $i++) {
              echo $i * 0.45."<br />";
          }
          

          【讨论】:

            猜你喜欢
            • 2013-10-24
            • 2011-10-20
            • 2023-03-11
            • 1970-01-01
            • 2021-12-25
            • 2015-01-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多