У меня есть два массива на PHP, которые я хочу объединить. Примером первого массива, который представляет собой список управления и классов, а также класса итоги:Объединить два ассоциативных массива в PHP
vdump($cl_subtotal);
array(2) {
'None' → array(1) {
'None' → float 132.88
}
'instore bakery' → array(10) {
'pies' → float 70.94
'cakes' → float 146.71
'miscellaneous' → float 25.57
'cookies' → float 52.38
'brownies' → float 33.96
'rolls' → float 143.02
'danish' → float 90.42
'bagels & pretzels' → float 85.68
'breads' → float 55.73
'dessert case' → float 81.83
}
}
Второй массив является деталь класса записей, и я хочу, чтобы они появились под каждым классом в первом массиве , Есть уловка. В этом втором массиве, если нет Департамента или Класса, ключ массива пуст (''). Отдел/класс всегда будет пустым, или оба будут содержать строку (так что никогда не будет случая, когда отдел пуст, но класс не пуст). Эти записи с пустым департаментом/классом во втором массиве должны быть связаны с записью в первом массиве, где Department = «None» и Class = «None».
Это пример второго массива:
vdump($groups);
array(2) {
'instore bakery' → array(10) {
'pies' → array(2) {
[0] => array(12) {
'UPC' → str•13 '0004712503209'
'Department_Desc' → str•14 'instore bakery'
'Class_Desc' → str•4 'pies'
'store' → str•2 '11'
'supplier_number' → str•4 '6303'
'invoice_number' → str•11 'DI613728199'
'seq' → str•1 '1'
'item_id' → str•14 '00047125032097'
'item_description' → str•9 'MARIONBRY'
'dept_number' → str•2 '17'
'final_qty' → str•4 '5.00'
'final_cost' → str•5 '37.65'
}
и вот пример записи с пустым отделом/Класс:
[""] => array(1) {
[""] => array(4) {
[0] => array(10) {
'store' → str•2 '11'
'supplier_number' → str•4 '6303'
'invoice_number' → str•11 'DI613728199'
'seq' → str•1 '8'
'item_id' → str•14 '00047125032332'
'UPC' → str•13 '0004712503233'
'item_description' → str•9 'NOT FOUND'
'dept_number' → str•1 '0'
'final_qty' → str•4 '2.00'
'final_cost' → str•5 '20.96'
}
RTFM: http://php.net/manual/en/function.array-merge.php ... вы могли бы хотя бы попробовать, даже если это не ваше 100% -ное решение. Возможно, вам также понадобится foreach ... php.net/manual/en/control-structures.foreach.php – djot
Для этого вы можете использовать функцию array_merge(). $ array3 = array_merge ($ array1, $ array2/*, $ arrayN, $ arrayN * /); – OBV
Насколько я понимаю, мне, вероятно, понадобится array_merge. Моя проблема заключается в том, как перебирать массивы и проводить сравнение, чтобы слияние происходило правильно. В частности, я застрял в том, как использовать foreach, когда ключи массива являются строками. foreach ($ groups as $ k => $ r) { if ($ k == '') {echo 'blank';} foreach ($ r as $ item => $ v) { foreach ($ cl_subtotal as & $ inv1) { if ($ inv1 ==) // Как я могу ссылаться на $ inv1 здесь? Я чувствую, что мне нужен ключ, но это строка, которая не всегда совпадает с } –