2012-12-04 111 views
4

我知道我可以做一個正常的循環與全整數這樣For循環遞增時間45分鐘

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

問題:
我通過一個循環不是整數,但與 要循環漂浮 次(45分鐘)。我想要的結果是這樣的:

0.45 
1.30 
2.15 
3.00 
3.45 
... 

PHP中是否有任何幫助函數來實現它?

+2

你試過了嗎? PHP文檔沒有說明在for循環中不支持浮點數。 –

+1

那些應該是時代? –

+0

乘以100,循環再分。 – dmaij

回答

12

閱讀註釋,並看到你真的想用時間來工作,你甚至可以用一個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"); 
} 
+1

+1給你先生。刪除我的答案,這是好得多。 –

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

這樣的事情?

+1

您與'Kami'有相同的代碼錯誤我懷疑複製並粘貼 – Baba

+0

對不起,但是這段代碼沒有任何錯誤,它是正確的語法:) –

+1

僅供教育用途,請參閱http://codepad.org/9D4pgW63外觀在'776'在輸出 – Baba

2

您可以簡單地在循環中使用浮動。 $i++在循環的最後部分意味着增加計數器1。只需將其更改爲0.45即可完成。

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

//編輯

正如許多人所指出的那樣,有一個與浮點精度固有的問題。上述示例應爲適用於小數字$i < 100,但數字變大時可能會出現問題。

+0

人們在投票前測試代碼?修復代碼中的錯誤 – Baba

+1

@Baba:無法修復,因爲問題本身已被破壞。 –

+0

@ IgnacioVazquez-Abrams ..我同意你 – Baba

-1

也許是這樣的:

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

我不會依賴於該浮點數。原因是四捨五入。

你通常做的是使用一個int,然後除法。

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

你可以簡單的使用

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

我不知道我會使用浮點值來控制循環本身,尤其是考慮到他們的不精確性傾向:-)

由於您似乎有一個公式,您可以簡單地使用循環內的公式:

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

這允許循環由一個整數控制,並且簡單地給出基於該整數的浮點值。