我正在尝试为PHP循环中的每个项添加一个整数。所以第一项获得+1,第二项获得+2,第三项获得+3 ......等等。
我找到了为每个项目添加相同数字的代码,但我希望每个项目都增加。
以下是我现在使用的每个项目获得+.1。
$delay = 0.1;
foreach ($posts as $post){
$delay+= .1;
}
如何为每个项目添加+ 1以上?
答案 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;
}