我创建了一个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]
我认为它引用了一个仍然不存在的价值。
答案 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
。您的数组索引似乎不是顺序/整数键。