1

我想知道,我们如何检测数组中的重复条目...

就像是

$array = array("192.168.1.1", "192.168.2.1","192.168.3.1","192.168.4.1","192.168.2.1","192.168.2.1","192.168.10.1","192.168.2.1","192.168.11.1","192.168.1.4") ;

我想获取数组中使用的 Duplicity 的数量(C 类唯一)。像这样

192.168.1.1 = unique
192.168.2.1 = Duplicate
192.168.3.1 = unique
192.168.4.1 = unique
192.168.2.1 = Duplicate
192.168.2.1 = Duplicate
192.168.10.1 = unique
192.168.2.1 = Duplicate
192.168.11.1 = unique
192.168.1.4 = Duplicate (Modified)

我尝试了这种风格的代码

$array2 = array() ;

foreach($array as $list ){

$ips = $list;

$ip = explode(".",$ips);

$rawip = $ip[0].".".$ip[1].".".$ip[2] ;

array_push($array2,$rawip);

}

但我无法以正确的方式设置数据,也无法进行循环以匹配数据。

修改值

谢谢

山姆

4

6 回答 6

4

试试这个:这会给你每个值的计数

$array = array("192.168.1.1", "192.168.2.1","192.168.3.1","192.168.4.1","192.168.2.1","192.168.2.1","192.168.10.1","192.168.2.1","192.168.11.1") ;

$cnt_array = array_count_values($array)

echo "<pre>"; 
print_r($cnt_array);

$res = array();
foreach($cnt_array as $key=>$val){
   if($val == 1){
      $res[$key] = 'unique';
   }
   else{
      $res[$key] = 'duplicate';
   }
}

echo "<pre>";
print_r($res);
于 2013-03-04T10:33:55.383 回答
0

使用array_unique($array)功能。它会给你下面的输出。

Array
(
    [0] => 192.168.1.1
    [1] => 192.168.2.1
    [2] => 192.168.3.1
    [3] => 192.168.4.1
    [6] => 192.168.10.1
    [8] => 192.168.11.1
)

并且总重复计数必须是:

array_count_values($array)
于 2013-03-04T10:33:02.400 回答
0

试试这个,希望它会工作

$FinalArray=array();
$arrayLen=count($array);
for($i=0; $i<$arrayLen;  $i++)
{
    if(!in_array($array[$i],$FinalArray))
        $FinalArray[]=$array[$i];
}

现在在 $FinalArray 你得到了所有唯一的 ip

于 2013-03-04T10:34:21.037 回答
0

试试这个:

for ($i = 0; $i < count($array); $i++) 
    for ($j = $i + 1; $j < count($array); $j++)
        if ($array[$i] == $array[$j])
            echo  $array[$i]; 
于 2016-08-01T09:49:45.290 回答
0

使用 in_array() 函数检查值是否在数组中

<?php
$output ='';
$array = array(0, 1, 1, 2, 2, 3, 3);
$isArraycheckedvalue = array();
for ($i=0; $i < sizeof($array); $i++) 
{
    $eachArrayValue = $array[$i];
    if(! in_array($eachArrayValue, $isArraycheckedvalue)) 
    {
        $isArraycheckedvalue[] = $eachArrayValue;
        $output .= $eachArrayValue. " Repated no <br/>";      
    }
    else
    {
        $isArraycheckedvalue[] = $eachArrayValue;
        $output .= $eachArrayValue. " Repated  yes <br/>";
    }
}
echo $output;
?>
于 2017-05-30T05:54:39.867 回答
-1

使用php查找数组中的重复值

function array_repeat($arr){
    if(!is_array($arr))
        return $arr;
    $arr1 = array_unique($arr);
    $arr3 = array_diff_key($arr,$arr1);
    return array_unique($arr3);
}
于 2016-07-27T04:12:37.397 回答