Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man effizient nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays suchen?

Wie kann man effizient nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays suchen?

DDD
DDDOriginal
2024-12-20 21:26:19915Durchsuche

How to Efficiently Search for Key-Value Pairs in Multidimensional PHP Arrays?

Suche nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays

Die Navigation in mehrdimensionalen Arrays in PHP kann schwierig sein, insbesondere bei der Suche nach einem bestimmten Schlüssel -Wert-Paare. Dieser umfassende Leitfaden stellt eine effiziente Methode zum schnellen Abrufen aller Subarrays vor, die ein bestimmtes Schlüssel-Wert-Paar enthalten, unabhängig von der Verschachtelungstiefe des Arrays.

Die vorgeschlagene Lösung ist eine rekursive Funktion namens „Suche“, die ein Array, einen Schlüssel, benötigt und ein Wert als Parameter. Es prüft, ob das Schlüssel-Wert-Paar auf der aktuellen Ebene des Arrays vorhanden ist, und fügt in diesem Fall das aktuelle Unterarray zu den Ergebnissen hinzu. Anschließend iteriert es über jedes Subarray und ruft sich selbst rekursiv auf, um die Suche auf tiefere Ebenen zu erweitern.

function search($array, $key, $value)
{
    $results = array();

    if (is_array($array)) {
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }

        foreach ($array as $subarray) {
            $results = array_merge($results, search($subarray, $key, $value));
        }
    }

    return $results;
}

Durch den Einsatz von Rekursion durchsucht die Suchfunktion die gesamte Array-Struktur und stellt sicher, dass alle passenden Schlüssel-Wert-Paare vorhanden sind identifiziert.

Beispielsweise anhand des folgenden Beispielarrays:

$arr = array(0 => array(id=>1,name=>"cat 1"),
             1 => array(id=>2,name=>"cat 2"),
             2 => array(id=>3,name=>"cat 1"));

Und bei der Suche nach key=name und value="cat 1", die Funktion gibt Folgendes zurück:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => cat 1
        )

    [1] => Array
        (
            [id] => 3
            [name] => cat 1
        )

)

Um die Effizienz zu steigern, führt eine alternative Implementierung die Ergebnisse rekursiver Aufrufe in einem einzigen $results-Array zusammen, anstatt separate Arrays zu erstellen:

function search($array, $key, $value)
{
    $results = array();
    search_r($array, $key, $value, $results);
    return $results;
}

function search_r($array, $key, $value, &$results)
{
    if (!is_array($array)) {
        return;
    }

    if (isset($array[$key]) && $array[$key] == $value) {
        $results[] = $array;
    }

    foreach ($array as $subarray) {
        search_r($subarray, $key, $value, $results);
    }
}

Beachten Sie, dass das kaufmännische Und & in der Parameterliste die Übergabe als Referenz angibt und so sicherstellt, dass alle rekursiven Aufrufe dieselben $results ändern Array.

Diese robuste und vielseitige Lösung ermöglicht Entwicklern die nahtlose Suche nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays, unabhängig von deren Tiefe oder Komplexität.

Das obige ist der detaillierte Inhalt vonWie kann man effizient nach Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays 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