对于数组中的每个元素,我需要将前一个元素的值添加到它的当前元素中。例如:
Array
(
[0] => 460
[1] => 25
[2] => 25
[3] => 25
[4] => 25
[5] => 25
[6] => 25
)
我怎样才能得到以下内容:
Array
(
[0] => 460
[1] => 485
[2] => 510
[3] => 535
[4] => 560
[5] => 585
[6] => 610
)
有什么想法吗?
答案 0 :(得分:3)
与其他人相比,这是一个更快的解决方案:
foreach ($a as $i => $val) {
// make sure the current item is not the first one.
// because the first one is the base number
if ($i > 0) {
// Update current $i (INDEX) by
// adding the previous value ($a[$i -1]) with the current value ($val)
$a[$i] = $a[$i - 1] + $val;
}
}
由于0
是第一个值,我们不能在它之前递增:)因此if
语句
这是一个演示:Example
使用什么循环方法无关紧要,这就是你应用它的方式。看,这是在for
循环中完成的完全相同的事情:
for($i = 0; $i < count($a); $i++) {
if($i > 0) {
$a[$i] = $a[$i - 1] + $a[$i];
}
}
这一切都归结为编码人员使用它的偏好。
这两个循环都返回正确的数据:
Array
(
[0] => 460
[1] => 485
[2] => 510
[3] => 535
[4] => 560
[5] => 585
[6] => 610
)
答案 1 :(得分:2)
喜欢这个吗?
$source = array(460, 25, 25, 25, 25, 25, 25);
$result = array();
$last = 0;
foreach($source as $s){
$last = $result[] = $s+$last;
}
答案 2 :(得分:0)
$previous = 0;
foreach ($a as $key => &$value)
$previous = $value = $previous + $value;
或
$sum = 0;
foreach ($a as $key => &$value)
{
$sum += $value;
$value = $sum;
}
答案 3 :(得分:0)
获取上一个索引的值(检查index
>> 0),并将其添加到当前值。
$values = array(
460,
25,
25,
25,
25,
25,
25
);
foreach($values as $key => &$value){
if($key > 0){
$prev_value = $values[$key-1];
$value += $prev_value;
}
}
echo print_r($values);
答案 4 :(得分:0)
$ array1 =(460,25,25,25,25,25,25);
function calculateAdjecentSum($ array1)
{
$ array2 = array();
$ pointer = 0;
foreach($ array1 as $ number){
$sum = $pointer + $number; $array2[] = $sum; $pointer = $sum;
}
返回$ array2;
}
答案 5 :(得分:0)
使用for循环就足够了:
<?php
$array = array
(
0 => 460,
1 => 25,
2 => 25,
3 => 25,
4 => 25,
5 => 25,
6 => 25,
);
for ($i=1, $c = count($array); $i<$c; ++$i) {
$array[$i] += $array[$i-1];
}
var_dump($array);
我不知道为什么所有其他答案在这种情况下使用foreach循环,因为在我看来最好这样做(没有条件,没有临时变量,没有来自foreach的未设置引用)。
答案 6 :(得分:0)
你可以这样做
<?php
$yourarray = array(460, 25, 25, 25, 25, 25, 25);
$l = 0;
foreach($yourarray as $b){
$l = $b+$l;
echo $last;
}
输出460485510535560585610
答案 7 :(得分:0)
试试这个:
<?php
$array = array( 460, 25, 25, 25, 25, 25, 25);
$result = array();
for ($i=count($array);$i>0; $i--){
$result[($i-1)] = array_sum($array);
array_pop($array);
}
echo "<pre>";
ksort($result);
print_r($result);
?>
输出:
Array
(
[0] => 460
[1] => 485
[2] => 510
[3] => 535
[4] => 560
[5] => 585
[6] => 610
)