Php检查数组中的重复值

时间:2012-10-31 10:34:19

标签: php

我对数组有疑问。

我制作了一个id的数组。

阵列看起来有点像这样。

$iIds[0] = 12  
$iIds[1] = 24  
$iIds[2] = 25  
$iIds[3] = 25  
$iIds[4] = 25  
$iIds[5] = 30

现在我需要代码来查看数组中的任何值是否多次。 然后,如果值在数组中3次,则将值注入另一个数组。

我尝试使用array_count_values(),但它返回值作为键。

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:2)

$iIds[0] = 12  
$iIds[1] = 24  
$iIds[2] = 25  
$iIds[3] = 25  
$iIds[4] = 25  
$iIds[5] = 30
$counts = array_count_values($iIds);
$present_3_times = array();
foreach($counts as $v=>$count){
    if($count==3)//Present 3 times
        $present_3_times[] = $v;
}

答案 1 :(得分:2)

  1. 计算值
  2. 过滤器阵列
  3. 将数组翻转回你想要的方式

    $ cnt = array_count_values($ iIds);

    $ filtered = array_filter($ cnt,create_function('$ x','return $ x == 3;'));

    $ final = array_flip($ filtered);

  4. array_flip(array_filter( array_count_values($iIds), create_function('$x', 'return $x == 3;')));
    

    请参阅:http://codepad.org/WLaCs5Pe

    修改

    如果最终数组中有多个值的机会,我建议不要翻转过滤后的数组,只需使用array_keys,这样就会变成:

    $cnt = array_count_values($iIds);
    
    $filtered = array_filter( $cnt, create_function('$x', 'return $x == 3;'));
    
    $final = array_keys($filtered);
    

    请参阅:http://codepad.org/ythVcvZM

答案 2 :(得分:1)

对于create array unique use array_unique php函数,然后重新排列数组使用array_values php函数的键,如下所示。

$iIds[0] = 12 ;
$iIds[1] = 24 ; 
$iIds[2] = 25 ;
$iIds[3] = 25 ; 
$iIds[4] = 25 ;
$iIds[5] = 30 ;


$unique_arr = array_unique($iIds);
$unique_array  = array_values($unique_arr);

print_r($unique_array);

获取值数组在数组中作为重复值<3>

$iIds[0] = 12 ; 
$iIds[1] = 24 ;
$iIds[2] = 25 ;
$iIds[3] = 25 ;
$iIds[4] = 25 ;
$iIds[5] = 30 ;

$arr =  array_count_values($iIds);

$now_arr = array();
foreach($arr AS $val=>$count){
   if($count == 3){
      $now_arr[] = $val; 
   }
 }
 print_r($now_arr);

感谢