2012-12-29 209 views
0

我有數組一個問題,有沒有我的朋友:)相同的價值觀

我有一個數組:

Array 
(
    [0] => 2012163115 
    [1] => 2012163115 
    [2] => 2012161817 
    [3] => 201214321971 
    [4] => 201214321971 
    [5] => 201214321971 
) 

,我需要這個與所有的變量出現不止一次

Array 
(
    [0] => 2012163115 
    [1] => 201214321971 
) 

我試試這個

foreach ($array as $val) { 
        if (!in_array($val, $array_temp)) { 
         $array_temp[] = $val; 
        } else { 
         array_push($duplis, $val); 
        } 
       } 

但結果是

Array 
(
    [0] => 2012163115 
    [1] => 201214321971 
    [2] => 201214321971 
) 

哪裏是我的錯?感謝幫助!

回答

2
$array = array(
    '2012163115', 
    '2012163115', 
    '2012161817', 
    '201214321971', 
    '201214321971', 
    '201214321971', 
); 

$duplication = array_count_values($array); 
$duplicates = array(); 
array_walk($duplication, function($key, $value) use (&$duplicates){ 
    if ($key > 1) 
    $duplicates[] = $value; 
}); 
var_dump($duplicates); 
+0

感謝您的幫助! – JasperM

3

array_unique()是否適合您。

編輯:OPS我沒有注意到「不止一次」的條款,在這種情況下:

$yourArray = array('a', 'a', 'b', 'c'); 

$occurrences = array(); 

array_walk($yourArray, function($item) use(&$occurrences){ 

    $occurrences[$item]++; 

}); 


$filtered = array(); 

foreach($occurrences as $key => $value){ 

    $value > 1 && $filtered[] = $key; 

} 

var_dump($filtered); 
+0

_More比once_。輸出數組應該包含兩個項目,而不是三個。 –

+0

但如何?當我使用array_unique()我有所有值的一次,但我需要的值有多個時間在一個新的數組。 – JasperM

+0

@JasperM對不起,看我的編輯。 – moonwave99

0
$array_counting = array(); 
foreach ($array as $val) 
    if (! in_array($val, $array_counting)) 
    { 
     $array_counting[$val] ++; // counting 
    } 

$array_dups = array(); 
foreach ($array_counting as $key => $count) 
{ 
    if ($count > 1) 
     $array_dups[] = $key; // this is more than once 
}