2016-07-01 5 views
1
$arrOne = array(
    '49' => 5 
); 

$arrTwo = array(
    '49' => 5 
); 

$myArray = array($arrOne, $arrTwo); 
$sumArray = array(); 

foreach ($myArray as $k => $subArray) { 
    foreach ($subArray as $id => $value) { 
     $sumArray[$id] += $value; 
    } 
} 

print_r($sumArray); 

結果、それを修正する方法エラー:お知らせ:オフセット不定:インデックス内の...ときの合計値と同じキー配列

error: Notice: Undefined offset: 49 in

で?

私は結果が欲しい:それはまだ存在しない場合は、アレイ(49 => 10)

+0

@Anantが見えます。 – Siguza

+0

'a + = b'は' a = a + b'といくらか同じです。これは、$ sumArray [$ id] = $ sumArray [$ id] + $ value'を実行していることを意味します。 – deceze

+0

@Siguzaああ、私はポイントを得た –

答えて

1

ちょうどインデックスを初期化します。

あなたのコードにパッチ
if(!isset($sumArray[$id])) { 
    $sumArray[$id] = 0; 
} 

$arrOne = array(
    '49' => 5 
); 

$arrTwo = array(
    '49' => 5 
); 

$myArray = array($arrOne, $arrTwo); 
$sumArray = array(); 

foreach ($myArray as $k => $subArray) { 
    foreach ($subArray as $id => $value) { 
     if(!isset($sumArray[$id])) { 
      $sumArray[$id] = 0; 
     } 
     $sumArray[$id] += $value; 
    } 
} 

print_r($sumArray); 

[Demo]

2

それはまだ定義されていないので、あなたは(+ =)を追加したい未定義のオフセット。以下に、内のコードを変更し : - [3v4l](https://3v4l.org/cDrMp)と比較し、エラーメッセージが無効になっているよう

if (!isset($sumArray[$id])) { 
    $sumArray[$id] = $value; 
} else { 
    $sumArray[$id] += $value; 
} 
+0

@decezeを削除して、コードとしてフォーマットしてくれてありがとう。どういうわけかそれは間違いを与え続けた。 – ashazar

関連する問題