如何从PHP中删除数组中的重复值?
使用array_unique().
例:
$array = array(1, 2, 2, 3); $array = array_unique($array); // Array is now (1, 2, 3)
//Find duplicates $arr = array( 'unique', 'duplicate', 'distinct', 'justone', 'three3', 'duplicate', 'three3', 'three3', 'onlyone' ); $unique = array_unique($arr); $dupes = array_diff_key( $arr, $unique ); // array( 5=>'duplicate', 6=>'three3' 7=>'three3' ) // count duplicates array_count_values($dupes); // array( 'duplicate'=>1, 'three3'=>2 )
使用 array_values(array_unique($array));
array_unique
:对于唯一数组
array_values
:用于重建索引
唯一对我有用的是:
$array = array_unique($array, SORT_REGULAR);
编辑:SORT_REGULAR
保持原始数组的顺序。
$result = array(); foreach ($array as $key => $value){ if(!in_array($value, $result)) $result[$key]=$value; }
有时array_unique()
不是这样,如果你想得到独特的和重复的项目 ......
$unique=array("","A1","","A2","","A1",""); $duplicated=array(); foreach($unique as $k=>$v) { if( ($kt=array_search($v,$unique))!==false and $k!=$kt ) { unset($unique[$kt]); $duplicated[]=$v; } } sort($unique); // optional sort($duplicated); // optional
结果
array ( 0 => '', 1 => 'A1', 2 => 'A2', ) /* $unique */ array ( 0 => '', 1 => '', 2 => '', 3 => 'A1', ) /* $duplicated */