我在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
}
}
第二个数组是类详细信息记录,我希望它们出现在第一个数组中的每个类下。 有一个问题。 在第二个数组中,如果没有部门或类,则数组键为空 ('')。 部门/类将始终为空,或者它们都包含一个字符串(因此永远不会出现部门为空但类不为空的情况)。 第二个数组中具有空白部门/类的这些记录应与第一个数组中的记录相关联,其中部门 = "无"和类 = "无"。
这是第二个数组的示例:
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'
}
这是我解决这个问题的方法:我首先替换了第二个数组 ($groups) 中的空键。 然后我做了:
foreach($cl_subtotal as $grname => &$itemlist ){
foreach($itemlist as $ilk => &$ilv){
$ilv = array(
'value' => $ilv,
);
foreach($groups[$grname][$ilk] as $k => $v) {
$ilv[$k] = $v;
}
}
}
将包含详细信息的数组合并到汇总数组中。