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

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

Mary-Kate Olsen
Freigeben: 2024-12-19 08:29:11
Original
843 Leute haben es durchsucht

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

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

Die Suche nach bestimmten Schlüssel-Wert-Paaren innerhalb eines mehrdimensionalen Arrays kann mühsam sein. Wenn die Array-Tiefe variabel ist, ist es wichtig, eine schnelle und effiziente Lösung zu finden.

Rekursive Suchfunktion

Die folgende PHP-Funktion verwendet Rekursion, um das Array rekursiv zu durchlaufen und zu vergleichen Werte für einen bestimmten Schlüssel:

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;
}
Nach dem Login kopieren

Beispiel Verwendung

Betrachten Sie das folgende Beispielarray:

$arr = array(
    0 => array('id' => 1, 'name' => 'cat 1'),
    1 => array('id' => 2, 'name' => 'cat 2'),
    2 => array('id' => 3, 'name' => 'cat 1')
);
Nach dem Login kopieren

Um alle Unterarrays mit dem Schlüssel „Name“ und dem Wert „Katze 1“ zu finden, verwenden wir:

print_r(search($arr, 'name', 'cat 1'));
Nach dem Login kopieren

Ausgabe:

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

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

)
Nach dem Login kopieren

Effizienz Überlegungen

Für eine verbesserte Effizienz, insbesondere bei großen Arrays, sollten Sie die Verwendung einer rekursiven Funktion in Betracht ziehen, die Ergebnisse als Referenz übergibt. Durch die gemeinsame Nutzung eines einzigen temporären $results-Arrays kann die Leistung erheblich verbessert werden:

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);
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich 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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage