2017-07-17 5 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 –

関連する問題