2013-05-04 72 views
6

如何刪除數組中的重複項?如何刪除數組中的重複項?

例如,如果我有以下陣列:

$array = array('1','1','2','3'); 

我希望它成爲

$array = array('2','3'); 

,所以我希望它刪除整個值,如果兩個它被發現

+0

http://php.net/array_count_values < - 我會嘗試先用這個函數寫東西。它至少計算一個值的使用頻率。很好地鍵入。 – hakre 2013-05-04 08:49:15

+0

退房http://stackoverflow.com/questions/369602/how-to-delete-an-element-from-an-array-in-php – bestprogrammerintheworld 2013-05-04 09:28:28

回答

4

根據PHP版本,這應該在PHP> = 4.0.6的所有版本的工作,因爲它不要求需要PHP> = 5.3匿名函數:

function moreThanOne($val) { 
    return $val < 2; 
} 


$a1 = array('1','1','2','3'); 
print_r(array_keys(array_filter(array_count_values($a1), 'moreThanOne'))); 

DEMO (更改下拉的PHP版本選擇PHP的版本,您正在使用)

這樣做是因爲:

  1. array_count_values將遍歷數組併爲每個值創建一個索引,並在每次遇到它時增加索引。
  2. array_filter將採用創建的數組並將其傳遞通過之前定義的moreThanOne函數,如果它返回false,鍵/值對將被刪除。
  3. array_keys將丟棄數組的一部分,創建一個數組,其值爲被定義的鍵。最後一步爲您提供一個結果,該結果將刪除原始數組中存在多次的所有值。
+2

匿名功能介紹在5.3 – 2013-05-04 09:17:30

+0

好點,所以要修改「不僅僅是PHP 5.4「它將用於PHP 4.0.6」^^ – Jon 2013-05-04 09:19:41

+0

它也可以在4.0.6中工作,也就是當'array_filter'被引入時:) – 2013-05-04 09:23:42

2

試試看代碼,

<?php 
    $array = array('1','1','2','3'); 

foreach($array as $data){ 
    $key= array_keys($array,$data); 
    if(count($key)>1){ 

    foreach($key as $key2 => $data2){ 
    unset($array[$key2]); 
     } 
    } 
    } 
    $array=array_values($array); 
    print_r($array); 


?> 

輸出

​​
4

可以過濾出來使用array_count_values()

$array = array('1','1','2','3'); 
$res = array_keys(array_filter(array_count_values($array), function($freq) { 
    return $freq == 1; 
})); 

該函數返回一個包含原始值及其各自頻率的數組;然後你只選擇單個頻率。最終結果是通過檢索密鑰獲得的。

Demo

1

刪除數組中的重複值。

array_unique($array) 

$array = array(4, "4", "3", 4, 3, "3"); 
$result = array_unique($array); 
print_r($result); 

/* 
    Array 
    (
     [0] => 4 
     [2] => 3 
    ) 
    */