Maison > développement back-end > tutoriel php > Comment trouver efficacement une clé dans un tableau multidimensionnel PHP par sa valeur ?

Comment trouver efficacement une clé dans un tableau multidimensionnel PHP par sa valeur ?

Patricia Arquette
Libérer: 2024-12-09 20:59:15
original
565 Les gens l'ont consulté

How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?

Recherche de tableau multidimensionnel PHP (Rechercher la clé par valeur)

Dans ce scénario, vous disposez d'un tableau multidimensionnel représentant une collection de produits. Chaque produit est défini par des propriétés telles que le nom, le slug, le prix, etc. Votre objectif est de trouver un moyen de rechercher dans le tableau un produit spécifique à l'aide de la propriété slug et de renvoyer sa clé correspondante dans le tableau.

Une façon d'y parvenir consiste à exploiter la fonction array_search et la fonction array_column. Voici une fonction personnalisée qui résume cette approche :

function array_search_multidim(array $array, string $column, string $key)
{
    return array_search($key, array_column($array, $column));
}
Copier après la connexion

Pour utiliser cette fonction, vous l'appelleriez ainsi :

$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');
Copier après la connexion

Cela recherchera dans le tableau $products un produit avec la propriété slug égale à « breville-one-touch-tea-maker-BTM800XL » et renvoie sa clé correspondante. Dans cet exemple, il renverra la valeur 1.

Une autre solution possible est basée sur la fonction array_search. Pour cette approche, vous devez utiliser PHP 5.5.0 ou supérieur :

$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));
Copier après la connexion

Ce code obtient le même résultat que l'exemple précédent.

Il existe également une troisième méthode utilisant array_walk_recursive qui parcourt récursivement tous les éléments du tableau et compare la valeur du slug avec la valeur donnée :

function array_walk_recursive_search($input, $needle, &$result = null)
{
    if (is_array($input)) {
        foreach ($input as $key => $value) {
            array_walk_recursive_search($value, $needle, $result);
        }
    } else {
        if ($input === $needle) {
            $result = $key;
        }
    }
}
Copier après la connexion

Cette fonction peut être invoquée comme suit :

array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);
Copier après la connexion

Il est important de noter que même si la méthode array_walk_recursive est plus générale et peut gérer tout type de structure de tableau, elle est généralement plus lente que les autres méthodes.

Dans l'ensemble, la meilleure méthode à utiliser dépendra des besoins spécifiques et des contraintes de votre application. Cependant, les deux méthodes les plus efficaces sont celles qui utilisent les fonctions array_search et array_column.

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