2017-07-17 7 views
1

Ich habe heute an etwas früher gearbeitet und bin auf dieses Problem gestoßen. Wie überprüfen Sie, ob ein bestimmter Array-Wert in diesem Array eindeutig ist?PHP überprüfen, ob der Array-Wert eindeutig ist

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

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

Ich habe über die Verwendung von array_search() oder in_array() gedacht, aber weder sind für die Suche nach Duplikaten sehr nützlich. Ich bin sicher, ich könnte eine Funktion schreiben, wie dies zu tun:

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

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

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

Oder eine andere Lösung war array_count_values() wie folgt zu verwenden:

$array_val_count = array_count_values($array); 

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

Aber es scheint seltsam für mich, dass PHP keine Build hat in Funktion (oder zumindest einen besseren Weg), dies zu tun?

Antwort

3

Try this:

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

Als Referenz finden Sie unter:

+1

Super! Dies ist die bisher eleganteste Lösung! – icecub

+0

Für ein Beispiel, siehe: https://3v4l.org/gdO1M – localheinz

+0

Danke. Ich werde noch ein paar Minuten warten, aber ich denke, das ist bei weitem die beste Lösung. Wenn nichts besser erscheint, werde ich Ihre Antwort akzeptieren :) – icecub

2

Sie können wie folgt versuchen -

$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 

Hier ist die Funktionsreferenz von array_count_values()

+0

Dies ist nicht sehr hilfreich. Sie überprüfen, ob das Array Duplikate enthält oder nicht. Die Frage war, ob ein bestimmter _value_ eindeutig ist oder nicht. – icecub

+0

Ahh! Ja! Ich aktualisiere meine Antwort! @icecub –

+0

Ich aktualisierte meine Antwort @icecub –

Verwandte Themen