如何将2个可以具有不同大小的多维数组相加?

时间:2016-03-17 20:12:18

标签: php arrays

我有两个多昏暗的arrasy,我需要得到它们的总和。

阵列:

array:5 [▼
  0 => {#275 ▼
    +"pharmacy_name": "CVS"
    +"num": "6"
    +"reversed": "2"
  }
  1 => {#279 ▼
    +"pharmacy_name": "KROGER"
    +"num": "8"
    +"reversed": "4"
  }
  2 => {#283 ▼
    +"pharmacy_name": "PUBLIX"
    +"num": "11"
    +"reversed": "3"
  }
  3 => {#284 ▼
    +"pharmacy_name": "RITE AID"
    +"num": "0"
    +"reversed": "2"
  }
  4 => {#286 ▼
    +"pharmacy_name": "WALMART"
    +"num": "13"
    +"reversed": "5"
  }
]
array:4 [▼
  0 => {#288 ▼
    +"pharmacy_name": "CVS"
    +"num": "422"
    +"reversed": "243"
  }
  1 => {#289 ▼
    +"pharmacy_name": "RITE AID"
    +"num": "0"
    +"reversed": "1"
  }
  2 => {#290 ▼
    +"pharmacy_name": "WALGREENS"
    +"num": "209"
    +"reversed": "99"
  }
  3 => {#291 ▼
    +"pharmacy_name": "WALMART"
    +"num": "6"
    +"reversed": "3"
  }
]

我写了一些代码(正如你将在下面看到的那样),但我遇到的问题是数组现在都是相同的,因为在某些pharmacy_name可以在第一个数组中,但不在第二个数组中,反之亦然(KROGER是在第一个数组中,但不在第二个,所以结果没有KROGER)。到目前为止的代码:

$total = [];
        foreach ($query as $key => $value) {
            foreach ($queryOV as $k => $val) {
                if(!isset($total[$value->pharmacy_name])){
                    $total[$value->pharmacy_name]['num'] =$value->num;
                    $total[$value->pharmacy_name]['reversed'] =$value->reversed;
                }
                if($value->pharmacy_name==$val->pharmacy_name){
                    $total[$value->pharmacy_name]['num'] += $val->num;
                    $total[$value->pharmacy_name]['reversed'] += $val->reversed;
                }
            }
        }

总结剩下的,但错过了KROGER.Please帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

$total = [];
foreach (array_merge($a1, a2) as $x) {
    if (!array_key_exists($x->pharmacy_name, $total))
        $total[$x->pharmacy_name] = ['pharmacy_name' => $x->pharmacy_name, 'num'=> 0, 'reversed' => 0];
    $total[$x->pharmacy_name]['num'] += $x->num;
    $total[$x->pharmacy_name]['reversed'] += $x->reversed
}
相关问题