/**
**关于参数的说明
**$key键值相同的键名
**$array代表原数组
**$start代表$array[0][$key]
**$newkey代表相同键值相同的键名
**/
function combine_same_val($array,$start,$key,$newkey){
static $new;
foreach($array as $k=>$v){
if($v[$key]==$start){
$new[$v[$newkey]][] = $v;
unset($array[$k]);
continue;
}
}
sort($array);
if(count($array)!==0){
combine_same_val($array,$array[0][$key],$key,$newkey);
}
return $new;
}
以上的方法有一定的bug,因为里面有静态变量,如果再次使用这个函数,会导致两次的结果叠加。所以我又相处新的解决办法
//合并某一字段键值相同的数组版本2.0
//参数说明:$array---传入的数组,$key---键值相同的键名,$newkey---合并后新的键名
function combine_same_val_v2($array,$key,$newkey=''){
foreach($array as $k=>$v){
foreach($array as $m=>$n){
if($v[$key]==$n[$key]){
$newkey?($new[$v[$newkey]][] = $array[$m]):($new[$k][] = $array[$m]);
unset($array[$m]);
}
}
}
return $new;
}