Wie kann ich effizient einen Wert finden, der einem bestimmten Schlüssel in einem mehrdimensionalen Array zugeordnet ist?

Susan Sarandon
Freigeben: 2024-11-04 14:44:58
Original
752 Leute haben es durchsucht

How Can I Efficiently Find a Value Associated with a Specific Key in a Multidimensional Array?

Den passenden Schlüsselwert in einem mehrdimensionalen Array finden

Die Suche nach bestimmten Schlüsseln in komplexen, mehrdimensionalen Arrays kann eine herausfordernde Aufgabe sein. Eine benutzerdefinierte rekursive Funktion wie die bereitgestellte versucht, dieser Herausforderung zu begegnen. Es kann jedoch zu Problemen mit der Rekursionsimplementierung kommen.

Die ursprüngliche Funktion durchläuft das Array und gibt den mit dem gesuchten Schlüssel verknüpften Wert zurück, wenn dieser gefunden wird. Handelt es sich bei dem Wert jedoch um ein Array (das einen Ordner darstellt), ruft er sich selbst rekursiv im Unterarray (dem neuen Heuhaufen) auf. Diese Rekursion kann problematisch werden.

Eine mögliche Lösung besteht darin, den RecursiveArrayIterator von PHP zu nutzen. Ab Version 5.6 bietet die Verwendung dieses Iterators einen effizienteren und zuverlässigeren Ansatz:

function recursiveFind(array $haystack, $needle)
{
    $iterator  = new RecursiveArrayIterator($haystack);
    $recursive = new RecursiveIteratorIterator(
        $iterator,
        RecursiveIteratorIterator::SELF_FIRST
    );
    foreach ($recursive as $key => $value) {
        if ($key === $needle) {
            return $value;
        }
    }
}
Nach dem Login kopieren

Diese Funktion iteriert rekursiv und untersucht Schlüssel und Werte im gesamten Array. Wenn ein passender Schlüssel gefunden wird, wird der entsprechende Wert zurückgegeben.

Alternativ können Generatoren für PHP 5.6 und höher die Suche nach mehreren passenden Schlüsseln erleichtern:

function recursiveFind(array $haystack, $needle)
{
    $iterator  = new RecursiveArrayIterator($haystack);
    $recursive = new RecursiveIteratorIterator(
        $iterator,
        RecursiveIteratorIterator::SELF_FIRST
    );
    foreach ($recursive as $key => $value) {
        if ($key === $needle) {
            yield $value;
        }
    }
}
Nach dem Login kopieren

Durch die Verwendung von Generatoren können Sie dies tun Durchlaufen Sie alle übereinstimmenden Werte, nicht nur den ersten. Diese Funktionalität kann sich bei der Verarbeitung komplexer und tief verschachtelter Arrays als wertvoll erweisen.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient einen Wert finden, der einem bestimmten Schlüssel in einem mehrdimensionalen Array zugeordnet ist?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!