当前位置: 首页 > 后端技术 > PHP

[转]PHP去除数组重复数据

时间:2023-03-30 05:23:36 PHP

转自_php实例_脚本之家/***数组排序*与array_unique函数的区别:要求val为字符串,而this可以为数组/对象**@paramunknown_type$arr待排序数组*@paramunknown_type$reserveKey是否保留原来的Key*@returnunknown*/staticfunctionm_ArrayUnique($arr,$reserveKey=false){if(is_array($arr)&&!empty($arr)){foreach($arras$key=>$value){$tmpArr[$key]=serialize($value).'';}$tmpArr=array_unique($tmpArr);$arr=数组();foreach($tmpArras$key=>$value){if($reserveKey){$arr[$key]=unserialize($value);}}else{$arr[]=unserialize($value);}}}关于转$arr;}代码很简单,但是很实用,有需要的朋友可以直接使用。另附上其他网友的解决方案,复制代码代码如下:$input=array("a"=>"green","","red","b"=>"green","","blue","red","c"=>"witer","hello","witer");//$result=array_unique($input);//删除重复元素$result=a_array_unique($input);//只留下一个元素foreach($resultas$aa){echo$aa."";}functionmulti_unique($array){foreach($arrayas$k=>$na)$new[$k]=序列化($na);$uniq=array_unique($new);foreach($uniqas$k=>$ser)$new1[$k]=unserialize($ser);返回($new1);}functiona_array_unique($array)//写得好{$out=array();foreach($arrayas$key=>$value){if(!in_array($value,$out)){$out[$key]=$value;}}return$out;}?>PHP数组有一个内置的函数array_unique()用于去重,但是PHP的array_unique函数只适用于一维数组,不适用于多维数组。下面提供了二维数组的array_unique函数复制代码代码如下:functionunique_arr($array2D,$stkeep=false,$ndformat=true){//判断是否保留一级数组键(一级数组键可以是非数字)if($stkeep)$stArr=array_keys($a阵列2D);//判断是否保留二级数组键(所有二级数组键必须相同)if($ndformat)$ndArr=array_keys(end($array2D));//降维,也可以使用implode将一维数组转换为逗号连接的字符串foreach($array2Das$v){$v=join(",",$v);$温度[]=$v;}//去掉重复的字符串,也是一个重复的一维数组$temp=array_unique($temp);//重新组装分解后的数组foreach($tempas$k=>$v){if($stkeep)$k=$stArr[$k];如果($ndformat){$tempArr=explode(",",$v);foreach($tempArras$ndkey=>$ndval)$output[$k][$ndArr[$ndkey]]=$ndval;}否则$output[$k]=explode(",",$v);}返回$output;}演示:$array2D=array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333'));print_r($array2D);