有关合并某一字段键值相同的数组合并的改进

/**
**关于参数的说明
**$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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值