工作中或者面试中一个常见的问题 将数组中相同某个key的另一个key的值合并。
<?php
header('Content-type:text/html; charset=UTF-8');
/**
* 合并数据中 key相同的merge_key的值
*
* @param array $arr 要处理的数组
* @param string $key 参照key
* @param string $merge_key 要合并的key
* @return array 处理后的数组
*/
function val_merge($arr, $key, $merge_key) {
//存放结果的数组
$result = array();
foreach( $arr as $val ) {
//因为以address为基准,所以将address当做key存放数据
isset($result[$val[$key]]) ? ( $result[$val[$key]][$merge_key] += $val[$merge_key] ) : ( $result[$val[$key]] = $val );
}
//返回处理后的数组
return array_values($result);
}
//要处理的数组
$arr= array(
array("address"=>"美国", "count"=>123),
array("address"=>"美国", "count"=>34),
array("address"=>"中国", "count"=>2),
array("address"=>"中国", "count"=>20),
array("address"=>"法国", "count"=>345)
);
var_export( val_merge($arr, 'address', 'count'));