2013-03-04 29 views
1

我想知道,怎樣才能檢測陣列重複的條目...如何使用php在數組中找到重複值?

喜歡的東西

$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") ; 

我想在陣列(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); 

} 

,但我無法設置以正確的方式數據,也無法使循環的數據進行匹配。

修改值

由於

SAM

+0

可能重複[如何檢測PHP數組中的重複值?](http://stackoverflow.com/questions/1170807/how-to-detect-duplicate-values-in-php-array ) – 2013-03-04 10:33:05

回答

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); 
+0

請參閱最新的問題。我說的重複c'類 – Sam 2013-03-04 10:39:25

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) 
+0

請參閱最新的問題。我說c'class – Sam 2013-03-04 10:38:42

+0

c'class獨特的手段? – 2013-03-04 10:42:46

0

試試這個,希望能對大家的工作

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

Now in $ FinalArray you g加時賽所有的唯一的IP

+0

請查看更新的問題。我說過重複的c'課 – Sam 2013-03-04 10:38:16

0

試試這個:

for ($i = 0; $i < count($array); $i++) 
    for ($j = $i + 1; $j < count($array); $j++) 
     if ($array[$i] == $array[$j]) 
      echo $array[$i]; 
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; 
?>