Maison > développement back-end > tutoriel php > Comment filtrer un tableau associatif en PHP en fonction des clés d'un tableau indexé ?

Comment filtrer un tableau associatif en PHP en fonction des clés d'un tableau indexé ?

Mary-Kate Olsen
Libérer: 2024-12-13 08:39:10
original
448 Les gens l'ont consulté

How to Filter an Associative Array in PHP Based on Keys from an Indexed Array?

Filtrer un tableau associatif basé sur les clés d'un tableau indexé

En PHP, array_filter() fournit une méthode pratique pour filtrer les tableaux associatifs basés sur sur leurs valeurs. Cependant, cette fonction ne prend en compte que les valeurs, laissant les programmeurs chercher un moyen de filtrer les clés en fonction d'un ensemble de valeurs autorisées. Cette question répond à ce défi.

Étant donné un tableau associatif ($my_array) et un tableau indexé de clés autorisées ($allowed), la tâche consiste à supprimer toutes les clés de $my_array qui ne sont pas présentes dans $allowed. La sortie souhaitée est un $my_array contenant uniquement les paires clé-valeur où les clés se trouvent dans $allowed.

Solution :

La réponse suggère d'utiliser deux manipulations de tableau function:

  • array_intersect_key(): Cette fonction effectue une comparaison entre deux tableaux en utilisant leurs clés. Il renvoie un nouveau tableau contenant uniquement les clés présentes dans les deux tableaux.
  • array_flip() : Cette fonction retourne les clés et les valeurs d'un tableau associatif, transformant efficacement ses clés en valeurs et vice versa.

En combinant ces deux fonctions, vous pouvez filtrer le tableau associatif comme suit :

$filtered_array = array_intersect_key($my_array, array_flip($allowed));
Copier après la connexion

Ici, array_flip($allowed) crée un nouveau tableau où les valeurs de $allowed deviennent des clés et les clés deviennent des valeurs. array_intersect_key($my_array, ...) compare ensuite $my_array avec le tableau inversé, renvoyant un tableau avec uniquement les clés autorisées comme clés et leurs valeurs associées.

Exemple :

En utilisant l'exemple fourni :

$my_array = array("foo" => 1, "hello" => "world");
$allowed = array("foo", "bar");
Copier après la connexion

Le $filtered_array résultant serait être :

array("foo" => 1);
Copier après la connexion

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