如何从PHP中删除数组中的重复值

Ian*_*Ian 144 php arrays duplicate-data

如何从PHP中删除数组中的重复值?

Jer*_*ten 230

使用array_unique().

例:

$array = array(1, 2, 2, 3);
$array = array_unique($array); // Array is now (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

  • @Ian - `注意,array_unique()不适用于多维数组 (18认同)
  • 以上将保留元素的键.如果你想重新索引它们,另外应用array_values:http://www.php.net/manual/en/function.array-values.php (16认同)
  • 这对我不好用,请使用:`$ array = array_unique($ array,SORT_REGULAR);` (2认同)

chi*_*him 22

//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 )
Run Code Online (Sandbox Code Playgroud)


nim*_*mas 19

使用 array_values(array_unique($array));

array_unique:对于唯一数组 array_values:用于重建索引

  • +1 `array_unique` 返回一个带有键值对的对象,并且 `array_values` 只返回数组形式的值。 (3认同)

ini*_*tel 7

唯一对我有用的是:

$array = array_unique($array, SORT_REGULAR);
Run Code Online (Sandbox Code Playgroud)

编辑:SORT_REGULAR保持原始数组的顺序。


Amr*_*rag 6

$result = array();
foreach ($array as $key => $value){
  if(!in_array($value, $result))
    $result[$key]=$value;
}
Run Code Online (Sandbox Code Playgroud)


Age*_*nce 5

有时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
Run Code Online (Sandbox Code Playgroud)

结果

array ( 0 => '', 1 => 'A1', 2 => 'A2', ) /* $unique */

array ( 0 => '', 1 => '', 2 => '', 3 => 'A1', ) /* $duplicated */
Run Code Online (Sandbox Code Playgroud)