0

我在 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 或 Class,则数组键为空白 ('')。Department/Class 将始终为空白,或者它们都将包含一个字符串(因此永远不会出现 Department 为空白但 Class 不为空白的情况)。第二个数组中具有空白部门/类的这些记录应与第一个数组中的记录相关联,其中部门=“无”和类=“无”。

这是第二个数组的示例:

 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'
     }
4

1 回答 1

0

以下是我解决此问题的方法:我首先替换了第二个数组 ($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;
                }
            }
        }

将带有详细信息的数组合并到汇总数组中。

于 2013-09-30T20:15:12.387 回答