php二维数组去重方法_php数组去除重复值的二个例子

发布时间:2020-06-14编辑:脚本学堂
有关php数组去除重复值的二个例子,php二维数组去重方法示例,使用php自定义函数去除二维数组元素中的重复值的方法。

php二维数组元素去重没有现成的函数,因此二维数组去重复项需要实现php自定义函数,这里分享二个例子,希望对大家有所帮助。

例1,php数组元素去除重复。

复制代码 代码示例:

<?php
function unique_array_2d($array2D,$stkeep=false,$ndformat=true)
{
// 判断是否保留一级数组键 (一级数组键可以为非数字)
if($stkeep) $stArr = array_keys($array2D);
// 判断是否保留二级数组键 (所有二级数组键必须相同)
if($ndformat) $ndArr = array_keys(end($array2D));
//降维,也可以用implode,将一维数组转换为用逗号连接的字符串
foreach ($array2D as $v){
 $v = join(",",$v);
 $temp[] = $v;
}
//去掉重复的字符串,也就是重复的一维数组
$temp = array_unique($temp);
//再将拆开的数组重新组装
foreach ($temp as $k => $v)
{
 if($stkeep) $k = $stArr[$k];
 if($ndformat)
 {
  $tempArr = explode(",",$v);
  foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
 }
 else $output[$k] = explode(",",$v);
}
return $output;
}
$array2D = array(
'first'=>array('title'=>'1111','date'=>'2222'),
'second'=>array('title'=>'1111','date'=>'2222'),
'third'=>array('title'=>'2222','date'=>'3333')
);
echo "<pre>";
print_r(unique_array_2d($array2D,true));
/**
* 将二维数组通过指定的 key 去重
*
* @param array $arr 要去重的数组
* @param array $by  指定key去重,该参数不指定将返回 array()
* @return array
*/
function array_multunique($arr,$by = array()) {
$temp = array();
foreach($arr as $key => $val) {
 foreach($by as $v) {
  $temp[$key] .= isset($val[$v]) ? $val[$v] : '';
 }
}
return array_intersect_key($arr,array_unique($temp));
}
/*$aa = array ( 
   array ('id' => 123, 'name' => '张三' ),  
   array ('id' => 123, 'name' => '李四' ),  
   array ('id' => 124, 'name' => '王五' ),  
   array ('id' => 125, 'name' => '赵六' ),  
   array ('id' => 126, 'name' => '赵六' )  
); 
$key = 'id'; 
array_multunique ($aa, array('id')); */
function array_remove_key($array,$keys){
if (!is_array($array) || !is_array($keys)){
 return false;
} // www.dgjs123.com
foreach($array as $t){
 foreach($keys as $k){
  unset($t[$k]);
 }
 $doc[]=$t;
}
return $doc;
}
/*$array = array(
'0' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')),
'1' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee'))
);
print_r( array_remove_key($array,array('c')));*/
function array_remove_key_val(&$a,$b,$c){
foreach ($a as $key=>$value){
 if ( isset($value[$b]) && ($value[$b]==$c) ){
  unset($a[$key]);
 }
}
}
/*$a=array(
array('id'=>1,'num'=>10,'type'=>'news'),
array('id'=>2,'num'=>100,'type'=>'pic')
);
print_r( array_remove_key_val($a,"id","1") );*/

例2,二维数组去掉重复值。
function array_unique_fb($array2D){
foreach ($array2D as $v){
  $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
  $temp[] = $v;
}
$temp = array_unique($temp);  //去掉重复的字符串,也就是重复的一维数组
 foreach ($temp as $k => $v){
 $temp[$k] = explode(",",$v); //再将拆开的数组重新组装
}
return $temp;
}

//二维数组去掉重复值  并保留键值
function array_unique_fb($array2D){
foreach ($array2D as $k=>$v){
 $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
  $temp[$k] = $v;
}
 $temp = array_unique($temp);
 //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v){
 $array=explode(",",$v);  //再将拆开的数组重新组装
  $temp2[$k]["id"] =$array[0];  
  $temp2[$k]["litpic"] =$array[1];
  $temp2[$k]["title"] =$array[2];
  $temp2[$k]["address"] =$array[3];
  $temp2[$k]["starttime"] =$array[4];
  $temp2[$k]["endtime"] =$array[5];
  $temp2[$k]["classid"] =$array[6];
  $temp2[$k]["ename"] =$array[7];
 }
return $temp2;
}