我创建了一个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
.数组的索引似乎不是顺序/整数键。