2016-11-08 27 views
-3

申し訳ありませんこれを理解するために非常に多くの記事を読んで、ついに自分を混乱させました!配列から別の配列へのPHP配列のマージ値

アレイ1:

Array (

[0] => Array ([ID] => SI[Date] => 06/01/2016 [Month] => 1 [Tier1] => 2.188875 [Tier2] => [Tier3] => [Tier4] => [Delivery] => 0) 

[1] => Array ([ID] => SI[Date] => 06/01/2016 [Month] => 1 [Tier1] => 2.139 [Tier2] => 0 [Tier3] => 0 [Tier4] => 0 [Delivery] => 0) 

[2] => Array ([ID] => SI[Date] => 14/01/2016 [Month] => 1 [Tier1] => 0.201 [Tier2] => 0 [Tier3] => 0 [Tier4] => 0 [Delivery] => 0) 

) 

アレイ2:

は、私は2つの配列を持って、私はSI00000xが一致したところアレイ1を更新する必要が

Array ( 
[SI000005] => 25 
[SI000010] => 15 
[SI000054] => 20 
[SI000069] => 0 
[SI000074] => 20 
[SI000076] => 16 
) 

(配送料とすべての請求書が含まれています)配列2の値を配列1の[Delivery]値にプッシュします。

私は確かにこれは簡単ですが、私が試したものはどれも年齢がかかったりクラッシュしたりします!

助けてください!

答えて

3

あなたはこの(ampersandに注意してください)使用することができます

foreach ($arr1 as &$rec) { 
    if (isset($arr2[$rec['ID']])) $rec['Delivery'] = $arr2[$rec['ID']]; 
} 
+0

助けてくれてありがとう!治療をしました。 – Giles

0
foreach ($array1 as &$a1) { 
    if (isset($array2[$a1['ID']])) { 
     $a1['Delivery'] = $array2[$a1['ID']]; 
    } 
} 
+1

(参照を使用)、これを試してみてください。変更はループの外側で継続されます。 – Jaime

1

を更新しました

foreach ($array1 as &$a1) { 
    if(isset($array1[$a1['ID']])) $a1['Delivery'] = $array1[$a1['ID']]; 
} 
+0

なぜOPは "これを試してください"? ***良い答え***は、何が行われたのか、それがなぜOPのためだけでなく、将来の訪問者のためにそうした方法で行われたのかについての説明を常に持っています。 –

関連する問題