PHP 二维数组去重(保留指定键值的同时去除重复的项)

Posted 君乐豹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 二维数组去重(保留指定键值的同时去除重复的项)相关的知识,希望对你有一定的参考价值。

对于如下二维数组,要求对其进行去重:

 

$arr = array(
          ‘0‘=>array(
                    ‘name‘=>‘james‘,
                    ‘age‘=>30,
          ),
          ‘1‘=>array(
                    ‘name‘=>‘susu‘,
                    ‘age‘=>26,
          ),
          ‘2‘=>array(
                    ‘name‘=>‘james‘,
                    ‘age‘=>30,
          ),
          ‘new‘=>array(
                    ‘name‘=>‘kube‘,
                    ‘age‘=>37,
          ),
          ‘list‘=>array(
                    ‘name‘=>‘kube‘,
                    ‘age‘=>27,
          ),
);

  //使用方法
  $key =‘name‘;
   $arr_key = second_array_unique_bykey($arr,$key);
   printf("As for the givenkey->%s:<br>",$key);
   print_r($arr_key);
   echo "<br/>";
 

二维数组内部的一维数组因某一个键值不能相同,删除重复项:

/*针对某一个键值来进行去重*/

<?php
$arr= array(……);  //同上的二维数组
functionsecond_array_unique_bykey($arr, $key){
    $tmp_arr = array();
    foreach($arr as $k => $v)
    {
        if(in_array($v[$key], $tmp_arr))   //搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
        {
            unset($arr[$k]); //销毁一个变量  如果$tmp_arr中已存在相同的值就删除该值
        }
        else {
            $tmp_arr[$k] = $v[$key];  //将不同的值放在该数组中保存
        }
   }
   //ksort($arr); //ksort函数对数组进行排序(保留原键值key)  sort为不保留key值
    return $arr;
   }

输出结果:

As for the given key->name:
Array (
 [0] => Array ( [name] => james [age] => 30 ) 
 [1] => Array ([name] => susu [age] => 26 ) 
 [2] => Array ( [name] => kube [age]=> 37 ) 
) 

 

以上是关于PHP 二维数组去重(保留指定键值的同时去除重复的项)的主要内容,如果未能解决你的问题,请参考以下文章

请教thinkphp 二维数组值去重怎么去的哦

php中一维或多维数组去除重复项

排序具有指定键值的数组PHP [重复]

L2-002. 链表去重

php用正则匹配二维数组的键值

L2-2. 链表去重