[英]How to merge two array with mean value if key-value pair matches in multidimensional array
我有一個數組。
$arr = array(
[
'amenity_id' => '4277',
'amenity_name' => 'Floor 1',
'category_id' => '380',
'amenity_value' => '0',
'unit_id' => '25253',
'unit_number' => '701',
'dom' => '50',
'building_id' => '423'
],
[
'amenity_id' => '4330',
'amenity_name' => 'Floor 7',
'category_id' => '380',
'amenity_value' => '53',
'unit_id' => '25253',
'unit_number' => '701',
'dom' => '50',
'building_id' => '423'
],
[
'amenity_id' => '4330',
'amenity_name' => 'Floor 7',
'category_id' => '380',
'amenity_value' => '53',
'unit_id' => '25253',
'unit_number' => '701',
'dom' => '20',
'building_id' => '423'
],
[
'amenity_id' => '4331',
'amenity_name' => 'Top Floor',
'category_id' => '380',
'amenity_value' => '32',
'unit_id' => '25253',
'unit_number' => '701,',
'dom' => '50',
'building_id' => '423'
],
[
'amenity_id' => '4331',
'amenity_name' => 'Top Floor',
'category_id' => '380',
'amenity_value' => '0',
'unit_id' => '25253',
'unit_number' => '701',
'dom' => '20',
'building_id' => '423'
],
);
在這里,您可以看到有 amenity_id 4330
和4331
的兩個便利設施重復出現。 而且,我想將這些數組與相同的舒適 id 合並並計算amenity_value
和dom
的平均值。
預期 output:
array(
[
'amenity_id' => '4277',
'amenity_name' => 'Floor 1',
'category_id' => '380',
'amenity_value' => '0',
'unit_id' => '25253',
'unit_number' => '701',
'dom' => '50',
'building_id' => '423'
],
[
'amenity_id' => '4330',
'amenity_name' => 'Floor 7',
'category_id' => '380',
'amenity_value' => '53',//(53+53)/2
'unit_id' => '25253',
'unit_number' => '701',
'dom' => '35',//(50+20)/2
'building_id' => '423'
],
[
'amenity_id' => '4331',
'amenity_name' => 'Top Floor',
'category_id' => '380',
'amenity_value' => '16', //(32+0)/2
'unit_id' => '25253',
'unit_number' => '701,'
'dom' => '35',//(50+20)/2
'building_id' => '423'
],
);
注意:可能有兩個以上的項目具有相同的 amenity_id,因此我們需要找到平均值(平均值)。
下面的代碼將獲取類似設施的所有鍵,並再次將其與主數組進行比較,以根據您的需要進行合並。 我相信這就是你要找的。
$newValArr = $newArr = $newAmenity = [];
foreach ($arr as $key => $value) {
if (!array_key_exists($value['amenity_id'], $newValArr)) {
$newValArr[$value['amenity_id']] = [];
}
array_push( $newValArr[$value['amenity_id']], $key );
}
foreach ($newValArr as $amenityId => $arrKeys) {
$newAmenity = $arr[$arrKeys[0]];
if( count($arrKeys) > 1 && $newAmenity['amenity_id'] == $amenityId){
$newAmenity['amenity_value'] = 0;
$newAmenity['dom'] = 0;
foreach ($arrKeys as $arrKey) {
$newAmenity['amenity_value'] += ($arr[$arrKey]['amenity_value'] / count($arrKeys));
$newAmenity['dom'] += ($arr[$arrKey]['dom'] / count($arrKeys));
}
}
array_push( $newArr, $newAmenity);
}
print_r( $newArr );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.