我有两个多昏暗的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帮助,谢谢!
答案 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
}