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
Mary-Kate Olsenoriginal
2024-12-13 08:39:10388parcourir

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));

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");

Le $filtered_array résultant serait être :

array("foo" => 1);

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!

Déclaration:
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