2011-06-09 63 views

回答

1
$a = array("a"=>"Cat","b"=>"Dog","c"=>"Cat"); 
$counted = array_count_values($a); 
$result = array(); 
foreach($counted as $key => $value) { 
    if($value === 1) { 
    $result[] = $key; 
    } 
} 
//$result is now an array of only the unique values of $a 
print_r($result); 
+0

由於其工作...... – 2011-06-09 11:33:46

-1
$a=array("a"=>"Cat","b"=>"Dog","c"=>"Cat"); 
$result = array_unique(a); 
print_r($result); 

試試這個...

1
function getArrayItemByValue($search, $array) { 
    // without any validation and cheking, plain and simple 
    foreach($array as $key => $value) { 
     if($search === $value) { 
      return $key; 
     } 
    } 

    return false; 
} 

然後嘗試使用它:

echo $a[getArrayitembyValue('Dog', $a)]; 
1

嘗試用:

$a = array("a"=>"Cat","b"=>"Dog","c"=>"Cat"); 
$aFlip = array_flip($a); 
$unique = array(); 

foreach (array_count_values($a) as $key => $count) { 
    if ($count > 1) continue; 
    // $unique[ array_search($key) ] = $key; 
    $unique[ $aFlip[$key] ] = $key; 
} 
+0

1,因爲這是很好的,如果密鑰應予以保留。然而,當使用array_search時,運行時複雜度很糟糕,因爲它從O(n)到O(n^2)。 – 2011-06-09 09:44:06

+0

好點。我編輯了我的答案,以獲得更高的效率。 – hsz 2011-06-09 09:48:39

1

使用下面的函數似乎是工作&得心應手。

<?php 
$array1 = array('foo', 'bar', 'xyzzy', 'xyzzy', 'xyzzy'); 

$dup = array_unique(array_diff_assoc($array1, array_unique($array1))); 

$result = array_diff($array1, $dup); 

print_r($result); 
?> 

你可以看到它在這裏工作 - http://codepad.org/Uu21y6jf