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
Mary-Kate OlsenOriginal
2024-12-19 08:29:11824Durchsuche

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;
}

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')
);

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

print_r(search($arr, 'name', 'cat 1'));

Ausgabe:

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

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

)

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);
    }
}

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!

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