PHP Liste blanche seulement quelques clés de tableau


Exemple

Lorsque vous ne souhaitez autoriser que certaines clés dans vos tableaux, en particulier lorsque le tableau provient de paramètres de requête, vous pouvez utiliser array_intersect_key avec array_flip .

$parameters = ['foo' => 'bar', 'bar' => 'baz', 'boo' => 'bam'];
$allowedKeys = ['foo', 'bar'];
$filteredParameters = array_intersect_key($parameters, array_flip($allowedKeys));

// $filteredParameters contains ['foo' => 'bar', 'bar' => 'baz]

Si la variable parameters ne contient aucune clé autorisée, la variable filteredParameters sera constituée d'un tableau vide.

Depuis PHP 5.6, vous pouvez également utiliser array_filter pour cette tâche, en passant le drapeau ARRAY_FILTER_USE_KEY comme troisième paramètre:

$parameters  = ['foo' => 1, 'hello' => 'world'];
$allowedKeys = ['foo', 'bar'];
$filteredParameters = array_filter(
    $parameters,
    function ($key) use ($allowedKeys) {
        return in_array($key, $allowedKeys);
    },
    ARRAY_FILTER_USE_KEY
);

L'utilisation de array_filter offre la flexibilité supplémentaire d'effectuer un test arbitraire par rapport à la clé, par exemple $allowedKeys pourrait contenir des modèles de regex au lieu de chaînes simples. Il indique également plus explicitement l'intention du code que array_intersect_key() combiné avec array_flip() .