2017-07-17 223 views
1

我今天早些時候正在做一些事情,並且我偶然發現了這個問題。你如何檢查某個數組值是否在該數組中是唯一的?PHP檢查數組值是否唯一

$array = array(1, 2, 3, 3, 4, 5); 

if(unique_in_array($array, 1)) //true 
if(unique_in_array($array, 3)) //false 

我一直在思考如何使用array_search()in_array(),但也不是尋找重複的非常有用的。我敢肯定,我可以寫一個函數這樣做:

function unique_in_array($arr, $search){ 
    $found = 0; 

    foreach($arr as $val){ 
     if($search == $val){ 
      $found++; 
     } 
    } 

    if($found > 1){ 
     return true; 
    } else { 
     return false; 
    } 
} 

或者另一種解決方案是使用array_count_values()這樣的:

$array_val_count = array_count_values($array); 

if($array_val_count[$search] > 1){ 
    return true; 
} else { 
    return false; 
} 

但它似乎很奇怪,我認爲PHP沒有構建在功能(或至少更好的方式)做到這一點?

回答

3

試試這個:

if (1 === count(array_keys($values, $value))) { 
    // $value is unique in array 
} 

僅供參考,請參閱:

+1

太棒了!這實際上是迄今爲止最優雅的解決方案! – icecub

+0

有關示例,請參閱:https://3v4l.org/gdO1M – localheinz

+0

謝謝。我會再等幾分鐘,但我認爲這是迄今爲止最好的解決方案。如果沒有更好的彈出,我會接受你的答案:) – icecub

2

你可以嘗試這樣的 -

$array1 = array(1, 2, 3, 3, 4, 3, 3, 5); 

$func = array_count_values($array1); 
$count = $func[3]; #Pass value here 

echo $count; #this will echo 4 

#If you pass undefined value, You should use like as below 
$count = isset($func[8])? $func[8] : 0; 

echo $count; #this will echo 0, Because 8 is absent in $array1 

這裏是array_count_values()的功能參考

+0

這不是非常有幫助。你正在檢查數組是否有重複。問題是要檢查某個_value_是否是唯一的。 – icecub

+0

啊!是!我正在更新我的答案! @icecub –

+0

我更新了我的答案@icecub –