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