1

I created a for(...) cycle where I plan to go through the values of an array and use those values to accumulate them in another array, but I'm getting a notice from Apache that says Notice: Undefined offset: .... The code I'm using is something like this:

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

I think the notice comes from the part where I do the "+=" because it's doing something like:

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

And it's referencing a value that still doesn't exist, I think.

4

5 に答える 5

1

まだ行っていない場合は、使用する前にテーブルを宣言する必要があります。

$accumulate_array = array();
于 2012-08-08T18:25:38.467 に答える
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 に答える
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 に答える