1

我创建了一个 for(...) 循环,我计划在其中遍历数组的值并使用这些值将它们累积到另一个数组中,但是我收到来自 Apache 的通知,上面写着Notice: Undefined offset: .. ... _ 我正在使用的代码是这样的:

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

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

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

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

4

5 回答 5

1

如果您还没有这样做,您必须在使用前声明您的表:

$accumulate_array = array();
于 2012-08-08T18:25:38.467 回答
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];
于 2012-08-08T18:27:58.920 回答
0

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

$accumulate_array = array();

然后,根据需要推送:

for ($a=0; $a<count($original_array); $a++){
    array_push($accumulate_array, $original_array[$a]); 
}
于 2012-08-08T18:29:48.033 回答
0

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

foreach($original_array as $key => $value) {
    if (!empty($accumulate_array[$key])) {
        $accumulate_array[$key] += $original_array[$key];
    } else {
        $accumulate_array[$key] = 0;
    }
}
于 2012-08-08T18:33:49.250 回答
0

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

于 2012-08-08T18:34:21.207 回答