php如何去重,php二维数组如何去重?(代码示例)

本篇文章给大家带来的内容是介绍php二维数组如何去重?(代码示例),让大家了解二维数组去重的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。

前言:php一维数组去重很简单,直接array_unique($arr)即可,但是二维数组是如何去重的?

下面我们就通过简单的代码示例来看看二维数组去重的方法:

代码示例:/*

* 二维数组去重

* 注意:二维数组中的元素个数必须一致,且键值也得一致,否则无意义

* @param array $arr

* @return array $arr_after

*/

public function array_unique_2DArr($arr=array()){

if(empty($arr) || !is_array($arr)){

return array();

}

/*******处理二维数组个数不一致问题 start 其他项目用可以去掉*******/

//判断数组中二维数组是否包含uniqueId,存在的话需要处理其他的日志信息,全部加上uniqueId,且uniqueId值必须相同

$hasUniqueId = false;

foreach($arr as $val){

if(array_key_exists('uniqueId', $val)){

$hasUniqueId = true;

break;

}

}

//如果$arr中的二维数组中uniqueId存在,则其他也增加

if($hasUniqueId){

foreach($arr as $_k=>$_val){

if(!array_key_exists('uniqueId', $_val)){

//在$_val中增加unique,只是为了和其他的带有uniqueId键值的数组元素个数保持一致

$_val_keys = array_keys($_val);

$_val_vals = array_values($_val);

array_unshift($_val_keys, 'uniqueId');

array_unshift($_val_vals, '0_0');

$arr[$_k] = array_combine($_val_keys, $_val_vals);

}

}

}

/********处理二维数组个数不一致问题 end********/

foreach($arr[0] as $k => $v){

$arr_inner_key[]= $k; //先把二维数组中的内层数组的键值记录在在一维数组中

}

foreach ($arr as $k => $v){

$v =join("^",$v); //降维 用implode()也行 ,注意,拆分时不能用逗号,用其他的不常用符号,逗号可能会由于数据本身含有逗号导致失败

$temp[$k] =$v; //保留原来的键值

}

$temp =array_unique($temp); //去重:去掉重复的字符串

foreach ($temp as $k => $v){

$a = explode("^",$v); //拆分后的重组

$arr_after[$k]= array_combine($arr_inner_key,$a); //将原来的键与值重新合并

}

return $arr_after;

}

总结:以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多相关视频教程推荐:php教程!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值