一、判断是否有重复值
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 ) )