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

これを試してください、うまくいくことを願っています

$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

機能を使用し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 に答える