2012-08-08 57 views
1

我創建了一個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] 

而且它引用我認爲,這個價值依然不存在。

回答

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]; 
+0

感謝您的回答,這將工作。 – Rauldinho 2012-08-08 18:35:23

+0

@Rauldinho - 不客氣! :) – nickb 2012-08-08 18:36:21

1

如果您還沒有這樣做,你必須在使用前聲明表格:

$accumulate_array = array(); 
+0

這不是OP的問題的根源,PHP只是在第一次引用時創建數組[http://webservice.com/cjbgJi]。 – nickb 2012-08-08 18:35:24

0

首先,聲明新的(空)數組:

$accumulate_array = array(); 

然後,推根據需要:

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

所需的功能是添加值,這不會增加。 – nickb 2012-08-08 18:30:42

0

只需添加檢查是否存在索引。而且,爲什麼不使用foreach進行數組迭代?

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

使用foreach。看起來你的數組索引不是順序/整數鍵。