Maison > développement back-end > tutoriel php > Comment puis-je trouver efficacement une valeur associée à une clé spécifique dans un tableau multidimensionnel ?

Comment puis-je trouver efficacement une valeur associée à une clé spécifique dans un tableau multidimensionnel ?

Susan Sarandon
Libérer: 2024-11-04 14:44:58
original
814 Les gens l'ont consulté

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

Trouver la valeur de la clé correspondante dans un tableau multidimensionnel

La recherche de clés spécifiques dans des tableaux multidimensionnels complexes peut être une tâche difficile. Une fonction récursive personnalisée comme celle fournie tente de relever ce défi. Pourtant, elle peut rencontrer des problèmes avec son implémentation de récursion.

La fonction d'origine parcourt le tableau, renvoyant la valeur associée à la clé recherchée si elle est trouvée. Cependant, si la valeur est un tableau (représentant un dossier), elle s'appelle de manière récursive sur le sous-tableau (la nouvelle botte de foin). Cette récursion peut devenir problématique.

Une solution potentielle consiste à exploiter le RecursiveArrayIterator de PHP. Avec les versions 5.6 et ultérieures, l'utilisation de cet itérateur offre une approche plus efficace et plus fiable :

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;
        }
    }
}
Copier après la connexion

Cette fonction itère de manière récursive, examinant les clés et les valeurs dans tout le tableau. Lorsqu'il rencontre une clé correspondante, il renvoie la valeur correspondante.

Alternativement, pour PHP 5.6 et supérieur, les générateurs peuvent faciliter la recherche de plusieurs clés correspondantes :

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;
        }
    }
}
Copier après la connexion

En utilisant des générateurs, vous pouvez parcourir toutes les valeurs correspondantes, pas seulement la première. Cette fonctionnalité peut s'avérer utile lors de la gestion de tableaux complexes et profondément imbriqués.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal