您现在的位置是:首页 > PHP学习

李清波 2020-05-23 PHP学习 1812 复制当前网址

PHP判断数组是否有重复值

一、判断是否有重复值

if (count($arr) != count(array_unique($arr))) {
    echo '该数组有重复值';
}

说明:获取数组的元素数量,如果有重复的,array_unique函数会将重复的剔除掉,相比不等则有重复。


二、获取重复的值(一维数组的值完全相等是重复;如果是二维数组,二维数组中的值必须完全相同才是重复)

function getRepeat($arr) {
    // 获取去掉重复数据的数组   
    $unique_arr = array_unique ( $arr );   
    // 获取重复数据的数组   
    $repeat_arr = array_diff_assoc ( $arr, $unique_arr );
 
    return $repeat_arr;
}


三、二维数组局部键对应值数据判断是否重复

/*
作用:根据二维数组中的部分键值判断二维数组中是否有重复值
参数:
$arr  —— 目标数组
$keys —— 要进行判断的键值组合的数组
返回:重复的值
扩展:判断的键值
*/
function getRepeat($arr,$keys) {
   $unique_arr = array();
   $repeat_arr = array();
   foreach ($arr as $k => $v) {
      $str = "";
      foreach ($keys as $a => $b) {
         $str .= "{$v[$b]},";
      }
      if( !in_array($str, $unique_arr) ){
         $unique_arr[] = $str;
      } else {
         $repeat_arr[] = $v;
      }
   }
   return $repeat_arr;
}

 

例子:

$arr1 = array("aaa","bbb","ccc","ddd","aaa","bbb");
$arr2 = array("aaa","bbb","ccc","ddd","aaa");
$arr3 = array("aaa","bbb","lll","ddd","aaa","bbb");
$arr = array($arr1,$arr2,$arr3);
 
$keys = array(0,1,2);
var_dump(getRepeat($arr,$keys));

输出:

Array ( [0] => Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd [4] => aaa ) )


文章来源:https://www.liqingbo.com/blog-1698.html

评论