Maison >développement back-end >tutoriel php >Comment rechercher efficacement des valeurs clés dans des tableaux multidimensionnels en PHP ?
Recherche dans des tableaux multidimensionnels de valeurs de clé correspondantes
Lorsque vous parcourez des tableaux multidimensionnels à la recherche d'une clé spécifique et de sa valeur correspondante, il est courant de rencontrer problèmes de récursion. Considérez l'exemple de méthode suivant :
<code class="php">private function find($needle, $haystack) { foreach ($haystack as $name => $file) { if ($needle == $name) { return $file; } else if(is_array($file)) { //is folder return $this->find($needle, $file); //file is the new haystack } } return "did not find"; }</code>
Cette méthode vise à localiser une clé dans un tableau associatif et à renvoyer sa valeur associée. Cependant, son approche récursive présente un problème potentiel.
Pour résoudre ce problème, une solution plus moderne et plus efficace peut être utilisée en utilisant les nouvelles fonctionnalités de PHP :
<code class="php">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; } } }</code>
Cette méthode utilise la récursivité et les itérateurs. pour parcourir le tableau efficacement et localiser la première clé correspondante.
Alternativement, si vous souhaitez parcourir toutes les correspondances au lieu de seulement la première, vous pouvez utiliser les générateurs de PHP 5.6 :
<code class="php">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; } } } // Usage foreach (recursiveFind($haystack, $needle) as $value) { // Use `$value` here }</code>
Avec cette approche, vous pouvez parcourir avec élégance toutes les valeurs correspondantes du tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!