PHP为每个项目添加+1

时间:2015-04-16 16:59:01

标签: php

我正在尝试为PHP循环中的每个项添加一个整数。所以第一项获得+1,第二项获得+2,第三项获得+3 ......等等。

我找到了为每个项目添加相同数字的代码,但我希望每个项目都增加。

以下是我现在使用的每个项目获得+.1。

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

如何为每个项目添加+ 1以上?

3 个答案:

答案 0 :(得分: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在评论中是正确的,你甚至不需要循环来计算算术系列中第一个 n 元素的总和(这里的系列是0.1,0.2, 0.3 ...)等式的一般形式(找到here)是:

  

S n = n(a 1 + a n )/ 2

其中 n 是我们要在序列中求和的术语数, 1 是第一个术语, n 是该系列的最后一个词。

在此之后,我们可以将代码减少到:

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

如果$posts恰好是一个关联数组,而不是从0开始或在索引中有间隙或漏洞,这也会解决潜在的问题。

答案 1 :(得分:0)

怎么样:

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

答案 2 :(得分:0)

试试这个:

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