我想知道如何执行此操作。
说我有一系列值 [0] 123 [1] 23242 [2] 123123 [3] 134234 [4] 0 [5] 12312 [6] 1232 [7] 0 [8] 2342 [9] 0
我怎样才能循环遍历这个数组,每当它达到零时,推入一个新数组,前一个值的总和直到最后0
例如....
我的新数组将包含。
[0]第一个数组键的总和[0-4]
[1] [5-7]的总和
[2] [8-9]的总和
我是PHP的新手,无法解决我将如何做到这一点。 就像在查看数组时如何查看以前的值
谢谢,如果有人可以提供帮助 我很感激
更新: 所以Joe希望我更新这个,这样他就可以帮助我了,所以这就是......
我想循环遍历数组,让迭代器进行数学运算以找到零之间的总和,并存储在新数组,值和运行总计中。然后我希望能够将它合并回原始数组....例如 如何与新阵列一起运行总计。
Loop array New Array, with comma delimitted values or maybe a MDA
[0]5 [0]9,9 (sum of values in loop array between the zeros)
[1]4 [1]7,16
[2]0 [2]4,20
[3]3 [3]5,25
[4]2
[5]2
[6]0
[7]4
[8]0
[9]3
[10]2
[11]0
最后,最重要的, 如何将其合并回来,它将如下所示
[0]5
[1]4
[2]0,9,9
[3]3
[4]2
[5]2
[6]0,7,16
[7]4
[8]0,4,20
[9]3
[10]2
[11]0,5,25
谢谢你能帮助我!
答案 0 :(得分:6)
$total = 0; // running total
$totals = array(); // saved totals
foreach ($values AS $value) // loop over the values
{
$total += $value; // add to the running total
if ($value == 0) // if it's a zero
{
$totals[] = $total; // save the total...
$total = 0; // ...and reset it
}
}
要在更新中创建第一个数组,请执行以下操作:
$total = 0; // running total - this will get zeroed
$grand_total = 0; // running total - this won't be zeroed
$totals = array(); // saved totals
foreach ($values AS $value) // loop over the values
{
$total += $value; // add to the running total
$grand_total += $value; // add it to the grand total
if ($value == 0) // if it's a zero
{
$totals[] = $total . ',' . $grand_total; // save the total and the grand_total
$total = 0; // ...and reset the zeroable total
}
}
对于你的第二个(“终极”:P)例子,我们只是将新数组加入,然后保存回我们循环的数组中:
$total = 0; // running total - this will get zeroed
$grand_total = 0; // running total - this won't be zeroed
foreach ($values AS $key => $value) // loop over the values - $key here is the index of the current array element
{
$total += $value; // add to the running total
$grand_total += $value; // add it to the grand total
if ($value == 0) // if it's a zero
{
$values[$key] = '0,' . $total . ',' . $grand_total; // build the new value for this element
$total = 0; // ...and reset the zeroable total
}
}
根本没有测试过,但我认为它的逻辑应该在那里。
答案 1 :(得分:2)
这是一个基本的算法任务......
$array = array( 1,3,7,9,10,0,5,7,23,3,0,6);
$result = array();
$sum = 0;
for( $i=0,$c=count($array);$i<$c;$i++ ){
if( $array[$i]==0 ){
$result[] = $sum;
$sum = 0;
}else{
$sum += $array[$i];
}
}
print_r($array);