使用数组存储累积数字


Using an Array to store accumulated number

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

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

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

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

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

如果尚未完成,则必须在使用表之前声明表:

$accumulate_array = array();
你是

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

$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];

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

$accumulate_array = array();

然后,根据需要推送:

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

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

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

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