Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich in PHP effizient nach einem Wert in einem mehrdimensionalen Array suchen?

Wie kann ich in PHP effizient nach einem Wert in einem mehrdimensionalen Array suchen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-17 17:11:09927Durchsuche

How Can I Efficiently Search for a Value Within a Multidimensional Array in PHP?

Werte in mehrdimensionalen Arrays mit in_array() finden

Die Funktion in_array() ist ein praktisches Werkzeug zum Überprüfen, ob ein Wert in einem Array vorhanden ist. Sein Nutzen erstreckt sich jedoch nur auf eindimensionale Arrays. Beim Umgang mit mehrdimensionalen Arrays ist ein anderer Ansatz erforderlich.

Rekursive Funktion für mehrdimensionale Arrays

Um festzustellen, ob ein Wert in einem mehrdimensionalen Array vorhanden ist, kann eine rekursive Funktion verwendet werden. Hier ist ein Beispiel für eine solche Funktion:

def in_array_r(needle, haystack, strict = False):
    for item in haystack:
        if ((strict ? item === needle : item == needle) or (is_array(item) && in_array_r(needle, item, strict))) {
            return True
        }

    return False

Die Funktion benötigt drei Argumente: die Nadel, nach der gesucht werden soll, den Heuhaufen, in dem gesucht werden soll, und ein optionales striktes Flag, das angibt, ob Werte streng verglichen werden sollen (d. h. Typ und Wert).

Verwendung

Um die rekursive Funktion zu nutzen, rufen Sie sie einfach mit der gewünschten Nadel auf und Heuhaufen:

$b = array(array("Mac", "NT"), array("Irix", "Linux"));
echo in_array_r("Irix", $b) ? 'found' : 'not found';

Dies gibt „gefunden“ aus, was darauf hinweist, dass „Irix“ im mehrdimensionalen Array $b vorhanden ist.

Alternative Ansätze

Während die rekursive Funktion vorhanden ist Da es sich um eine vielseitige Lösung handelt, gibt es auch andere Möglichkeiten, mehrdimensional nach Werten zu suchen Arrays:

  • isArrayRecursive(): Durchläuft das Array rekursiv und prüft jeden Wert einzeln.
  • implode() und in_array(): Implodiert das mehrdimensionale Array in ein eindimensionales Array und verwendet dann in_array(). Dieser Ansatz kann jedoch zu falsch positiven oder negativen Ergebnissen führen, wenn Elemente Arrays enthalten.
  • array_walk_recursive(): Verwendet eine Rückruffunktion, um das Array rekursiv zu durchlaufen und jeden Wert zu überprüfen.

Letztendlich hängt die beste Vorgehensweise von den spezifischen Anforderungen der Anwendung ab. Wenn Geschwindigkeit eine Rolle spielt, kann die rekursive Funktion eine geeignete Wahl sein. Andernfalls können die alternativen Methoden eine einfachere oder robustere Lösung bieten.

Das obige ist der detaillierte Inhalt vonWie kann ich in PHP effizient nach einem Wert in einem mehrdimensionalen Array suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn