2012-10-23 56 views
0

我有這樣如何在PHP數組中找到重複值?

$a=array(0=>1,1=>1,2=>5,3=>5,4=>10) 

數組現在我想找出重複值,並在它們加入一個這樣的數組:

array_push($arrayOfones,$a['0'],$a['1']; 
array_push($arrayOfFive,$a['2'],$a['5']; 
+0

'$ a ['0']','$ a ['1']','$ a ['2']'和'$ a ['5']'無效顯示在您的代碼 –

+0

['array_count_values'](http://php.net/array_count_values)? – deceze

回答

0
$a=array(0=>1,1=>1,2=>5,3=>5,4=>10); 
    $c=0; 
    foreach ($a as $key => $row) { 

     if (!isset($rs[$row])) { 
      $rs[$row][$key]= $key; 
      $c = 1; 
      $res[$row]['count'] = $c; 
      $res[$row]['values'][$key] = $key; 
     } 
     else { 
      $res[$row]['count']++; 
      $res[$row]['values'][$key] = $key; 
     } 
    } 
3

你可以看看array_count_values

$ret = array_count_values($a); 

// get the duplicate values 
$ret = array_filter($ret, function ($var) { 
    return $var > 1; 
}); 

array_walk($ret, function(&$var, $key) { 
    $var = array_fill(0, $var, $key); 
}); 

var_dump($ret); // $ret[1] is $arrayOfOnes, $ret[5] is $arrayOfFive 
1

稍微簡單一點,除了count()之外沒有數組函數:

foreach($a as $key=>$value){ 
    $ip[$value][] = $key; 
} 

foreach($ip as $key=>$inner_arr){ 
    if(count($inner_arr) > 1) 
    $dup[$key] = $inner_arr ; 
}