У меня два разных размерных массива.
Массив 1:
Array1 ( [0] => Array ( [id] => 123 [price] => 5 [purchase_time] => 2014/4/10 ) [1] => Array ( [id] => 123 [price] => 5 [purchase_time] => 2014/5/17 ) )
Массив 2:
Array2 ( [0] => 5 [1] => 8 )
Я хочу что-то вроде этого:
Array ( [0] => Array ( [id] => 123 [price] => 5 [purchase_time] => 2014/4/10 [Qty] => 5 ) [1] => Array ( [id] => 123 [price] => 5 [purchase_time] => 2014/5/17 [Qty] => 8 ) )
В основном первый массив – это информация, полученная из таблицы SQL. Второй массив содержит количество проданных продуктов. Теперь я хочу объединить эти два массива и использовать объединенный массив для создания новой таблицы. Поскольку эти два массива имеют разные размеры. Я не знаю, как это сделать. Вот моя попытка:
$i = 0; foreach($array1 as $row) { $newarray = array_merge($row,$array2[$i]); $i++; }
Может быть, проще, но для удовольствия без foreach
:
array_walk($array1, function(&$v, $k, $a){ $v['Qty'] = $a[$k]; }, $array2);
Самый простой способ:
$i = 0; foreach($array1 as &$row) { $row['Qty'] = $array2[$i++]; }
Или, если ключи обоих массивов одинаковы (0,1,2 …) и массив имеют одинаковую длину:
foreach($array1 as $k => &$row) { $row['Qty'] = $array2[$k]; }
Если $array1
и $array2
отображаются одинаковыми индексами, поэтому они имеют одинаковую длину, вы можете попробовать:
foreach($array2 as $index=>$quantity){ $array1[$index]['Qty'] = $quantity; }
И все! Если вы хотите сохранить исходный $array1
нетронутым, вы можете сделать копию перед foreach.
Создайте новый массив и сохраните его там. Вы можете получить доступ к значению $array2
потому что они имеют одинаковый индекс $array1
поэтому вы можете использовать $key
этих двух массивов.
$array3 = []; foreach($array1 as $key => $val) { $array3[] = [ 'id' => $val['id'], 'price' => $val['price'], 'purchase_time' => $val['purchase_time'], 'Qty' => $array2[$key] ]; } print_r($array3);