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

Wie kann man Schlüssel-Wert-Paare in mehrdimensionalen PHP-Arrays effizient finden?

DDD
Freigeben: 2024-12-24 14:25:10
Original
514 Leute haben es durchsucht

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

Werte in mehrdimensionalen Arrays mithilfe von Schlüsseln in PHP finden

Die Suche nach bestimmten Schlüssel-Wert-Paaren in mehrdimensionalen Arrays kann eine mühsame Aufgabe sein, insbesondere wenn Sie es nicht wissen die Tiefe des Arrays. In diesem Artikel wird eine effiziente PHP-Funktion vorgestellt, die das Array rekursiv durchläuft und alle Unterarrays zurückgibt, die den Suchkriterien entsprechen.

Die Funktion search() benötigt drei Parameter: das zu durchsuchende Array und den zu suchenden Schlüssel und den abzugleichenden Wert. Es verwendet Rekursion, um alle Ebenen des Arrays zu erkunden und auf jeder Ebene nach dem Schlüssel-Wert-Paar zu suchen.

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

Zum Beispiel bei gegebenem 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

Aufruf von search( $arr, 'name', 'cat 1') würde Folgendes zurückgeben:

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

Aus Effizienzgründen kann eine optimierte Version der Funktion search_r() verwendet werden:

function search($array, $key, $value)
{
    $results = array();
    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

Diese Version vermeidet das wiederholte Zusammenführen von Arrays und macht sie dadurch effizienter.

Das obige ist der detaillierte Inhalt vonWie kann man Schlüssel-Wert-Paare 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage