2015-04-16 32 views
1

我試圖給PHP循環中的每個項目添加一個整數。所以第一個項目獲得+1,第二個項目獲得+2,第三個項目+3 ....等PHP爲每個項目添加+1更多

我發現代碼添加到每個項目相同的數字,但我希望它增加每個項目。

下面是我現在用來獲得+.1到每個項目。

$delay = 0.1; 
foreach ($posts as $post){ 
    $delay+= .1; 
} 

如何爲每個項目添加+.1?

+2

做$延遲= $延遲+ 0.1;工作? – mdixon18

+0

這不是一個整數,這些都是浮點數,你基本上需要一個計數,它是x * 0.1,所以它最終如你所願,添加你要做的值:'$ delay + =(count * 0.1); –

+2

爲什麼循環? '$ delay = count($ posts)* 0.1'? –

回答

1

假設使用順序鍵基於0的整數索引的數組,你可以做這樣的事情:

$delayBase = $delay = 0.1; 
foreach ($posts as $k => $post){ 
     $delay += ($k + 1)($delayBase); 
} 

在第一次迭代(當$k爲0),這將增加0.1至$delay。第二次迭代將添加(2 * 0.1)或0.2到$delay。第三次迭代將添加(3 * 0.1)或0.3等等。

更新

我覺得@MarcB是正確的意見,你甚至都不需要循環計算算術級數(這裏的系列爲0.1第一ñ元素的總和,0.2%,0.3 ...)方程(實測here)的一般形式是:

小號ñ = N(A 1 +一個ñ )/ 2

ñ是我們正在尋找的系列總結的項數,一個是第一項和ñ是該系列中的最後一項。

在此之後,我們可以將代碼減少到這一點:

$numPosts = count($posts); 
$sum = ($numPosts(0.1 + ($numPosts * 0.1))/2) 
$delay = 0.1 + $sum; 

這也將得到解決潛在的問題,如果$posts恰好是一個關聯數組,在0無法啓動,或在縫隙或孔洞指數。

+0

您可以輕鬆地添加到值,但我喜歡這個。投票。 – mdixon18

+0

如果第一個鍵是'10'或'a'會怎麼樣? – AbraCadaver

+0

@AbraCadaver然後OP將需要一個不同的解決方案,因此我在開始時的警告。 –

0

如何:

$delay = 0.1; 
for ($i=0; $i<sizeof($posts); $i++){ 
    $posts[i] += $i*delay; 
} 
0

試試這個:

$delay = $i = 0.1; 
foreach ($posts as $post) { 
    $delay+= $i; 
    $i += 0.1; 
} 
相關問題