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
Susan SarandonOriginal
2024-12-15 20:39:18307Durchsuche

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

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

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

Ausgabe:

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

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

)

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

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!

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