2016-11-08 2 views
-3

Извините, что я прочитал столько сообщений, чтобы понять это и, наконец, смутил себя!PHP-массив слияния значений из одного массива в другой

У меня есть 2 массивы:

массива 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: (Содержит все счета-фактуры с стоимость доставки)

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

мне нужно обновить массив 1, где соответствует SI00000x и введите значение из массива 2 в значение [Доставка] в массиве 1.

Я уверен, что t он прост, но все, что я пытаюсь сделать, либо возраста, либо катастрофы!

Пожалуйста, помогите!

ответ

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, но и для будущих посетителей SO. –

Смежные вопросы