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

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

Susan Sarandon
Freigeben: 2024-12-28 15:47:33
Original
189 Leute haben es durchsucht

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

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

Einführung:

Suchen Spezifische Subarrays basierend auf Schlüsselwertübereinstimmungen innerhalb mehrdimensionaler Arrays können eine Herausforderung darstellen, insbesondere wenn die Tiefe des Arrays unbekannt ist. In diesem Artikel wird ein rekursiver Ansatz zur effizienten Durchführung dieses Suchvorgangs untersucht.

Funktionsdefinition:

function search($array, $key, $value)
{
    // Initialize an empty results array
    $results = array();

    // Check if the current element is an array
    if (is_array($array)) {
        // If the current element matches the key-value pair, add it to the results
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }

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

    // Return the accumulated results
    return $results;
}
Nach dem Login kopieren

Beispiel:

Berücksichtigen Sie das folgende mehrdimensionale Array:

$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

Bei der Suche nach dem Schlüssel-Wert-Paar 'name' => 'cat 1', die Funktion gibt Folgendes zurück:

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

Überlegungen zur Leistung:

Für Szenarien, in denen Effizienz im Vordergrund steht, ist ein alternativer Ansatz verfügbar:

function searchOptimized($array, $key, $value)
{
    $results = array();
    searchOptimized_r($array, $key, $value, $results);
    return $results;
}

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

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

    foreach ($array as $subarray) {
        searchOptimized_r($subarray, $key, $value, $results);
    }
}
Nach dem Login kopieren

In dieser optimierten Version werden die Suchergebnisse direkt im temporären $results-Array gesammelt, sodass keine Array-Zusammenführung erforderlich ist. Durch die Angabe der Pass-by-Reference im Aufruf von searchOptimized_r behält diese Version eine hohe Leistung bei und bewahrt gleichzeitig die Kompatibilität mit älteren PHP-Versionen.

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