使用数组存储累计数

时间:2012-08-08 18:23:56

标签: php arrays

我创建了一个for(...)循环,我计划遍历一个数组的值并使用这些值在另一个数组中累积它们,但是我收到了来自Apache的通知 Notice :未定义的偏移量:...... 。我正在使用的代码是这样的:

for ($a=0;$a<count($original_array);$a++){
    $accumulate_array[$a] += $original_array[$a]
}

我认为通知来自我执行“+ =”的部分,因为它正在执行以下操作:

$accumulate_array[$a] = $accumulate_array[$a] + $original_array[$a]

我认为它引用了一个仍然不存在的价值。

5 个答案:

答案 0 :(得分:1)

如果您还没有完成,则必须在使用之前声明您的表格:

$accumulate_array = array();

答案 1 :(得分:0)

你是对的,通知是因为这一行:

$accumulate_array[$a] += $original_array[$a];

因为它扩展为:

$accumulate_array[$a] = $accumulate_array[$a] + $original_array[$a];

并且$accumulate_array[$a]未定义,而它正试图获取该值。因此,如果您正在创建一个运行总和,您可能希望将其初始化为零,如下所示:

if( !isset( $accumulate_array[$a] )) $accumulate_array[$a] = 0;
$accumulate_array[$a] = $accumulate_array[$a] + $original_array[$a];

答案 2 :(得分:0)

首先,声明新的(空)数组:

$accumulate_array = array();

然后,根据需要推送:

for ($a=0; $a<count($original_array); $a++){
    array_push($accumulate_array, $original_array[$a]); 
}

答案 3 :(得分:0)

只需添加检查不存在的索引。而且,为什么不使用foreach进行数组迭代?

foreach($original_array as $key => $value) {
    if (!empty($accumulate_array[$key])) {
        $accumulate_array[$key] += $original_array[$key];
    } else {
        $accumulate_array[$key] = 0;
    }
}

答案 4 :(得分:0)

使用foreach。您的数组索引似乎不是顺序/整数键。