Préserver les clés dans le filtrage de tableau à l'aide de array_intersect_key et array_flip
En PHP, la fonction array_filter() peut être utilisée pour supprimer des éléments d'un tableau basé sur une fonction de rappel personnalisée. Cependant, le rappel ne reçoit que les valeurs du tableau, pas les clés.
Considérez le scénario dans lequel vous disposez d'un tableau associatif ($my_array) et d'une liste de clés autorisées dans un tableau indexé ($allowed). L'objectif est de filtrer $my_array et de supprimer toutes les clés qui ne sont pas présentes dans $allowed.
L'approche la plus efficace consiste à exploiter les fonctions array_intersect_key et array_flip. La fonction array_intersect_key filtre les paires clé-valeur d'un tableau en fonction des clés présentes dans un autre tableau. La fonction array_flip inverse les clés et les valeurs d'un tableau, créant ainsi un mappage entre les valeurs et les clés.
En combinant ces fonctions, vous pouvez obtenir le filtrage souhaité :
$filtered_array = array_intersect_key($my_array, array_flip($allowed));
Ce code créera un nouveau tableau ($filtered_array) qui contient uniquement les paires clé-valeur de $my_array où les clés sont présentes dans $allowed. Le résultat sera identique au résultat souhaité :
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!