Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann man Subarrays basierend auf Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays effizient finden?

Wie kann man Subarrays basierend auf Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays effizient finden?

Susan Sarandon
Freigeben: 2024-12-15 20:39:18
Original
304 Leute haben es durchsucht

How to Efficiently Find Subarrays Based on Key-Value Pairs in Multidimensional PHP Arrays?

Subarrays basierend auf Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays finden

Beim Durchlaufen mehrdimensionaler Arrays kann es schwierig sein, bestimmte Subarrays basierend auf zu finden auf einem Schlüssel-Wert-Paar. Es gibt jedoch eine effiziente Möglichkeit, dies rekursiv zu tun, unabhängig von der Tiefe des Arrays.

Funktionsimplementierung:

Lassen Sie uns eine Funktion erstellen, um nach Unterarrays zu suchen, die die angegebenen Bedingungen erfüllen :

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

    if (is_array($array)) {
        // Check if the current subarray matches
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }

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

    return $results;
}
Nach dem Login kopieren

Nutzung Beispiel:

Angenommen 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

Wir können nach Unterarrays mit dem Schlüssel „Name“ und dem Wert „Katze 1“ suchen:

$found = search($arr, 'name', 'cat 1');
print_r($found);
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 beim Umgang mit großen Arrays, kann die Funktion durch Vermeidung der Array-Zusammenführung optimiert werden. Stattdessen können Ergebnisse aus rekursiven Aufrufen in einem temporären Array gespeichert werden:

function search_optimized($array, $key, $value)
{
    $results = [];
    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);
    }
}
Nach dem Login kopieren

Durch die Übergabe des Ergebnisarrays als Referenz kann die Funktion das Endergebnis effizient erstellen.

Das obige ist der detaillierte Inhalt vonWie kann man Subarrays basierend auf Schlüssel-Wert-Paaren in mehrdimensionalen PHP-Arrays effizient finden?. 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