Articles
This document is also available in English
Appliquer un filtre à une variable est simple. Appliquer le même filtre sur plusieurs variables demande une boucle. Ou bien une fonction de tableau.
array_filter est notre premier arrêt. Array_filter filtre un tableau en appliquant à tous ses éléments une fonction. La fonction doit retourner true pour que l'élément soit conservé.
<?php $array = array_flip(range('a', 'f')); $filtered = array_filter( $array,'filter'); print_r($filtered); function filter($x) { return $x % 2; } ?> Array ( [b] => 1 [d] => 3 [f] => 5 )
Outre la sélection, il est possible de modifier tous les éléments d'un tableau en leur appliquant directement une fonction à tous les éléments, et en les modifiants dans le tableau. La fonction de transformation prend un ou plusieurs argument, et retourne une valeur qui sera stockée dans le tableau résultant.
<?php $array = array_flip(range('a', 'f')); $transformed = array_map('transforme', $array); print_r($transformed); function transforme($x) { if ($x < 2) { return $x. " pain"; } else { return $x. " pains"; } } ?>
Pour transformer un tableau associatif, il faut faire une pirouette :
<?php $array = array_flip(range('a', 'f')); $keys = array_keys($array); $values = array_values($array); $middle = array_map('transforme', $keys, $values); $transformed = array_combine($keys, $middle); print_r($transformed); function transforme($key, $value) { return "La clé $key est associée a la valeur $value"; } ?>
La fonction de transformation peut accepter plusieurs arguments : il faut alors fournir à array_map() le même nombre de tableaux que d'arguments à la fonction. Si vous en passez trop, les tableaux surnuméraires seront envoyés, et vous devrez y accéder via les fonctions comme func_get_args(). Si vous n'en passez pas assez, une alerte sera affichée pour chaque appel à la fonction de filtre.
array_walk() fonctionne de la même façon que array_map(), à quelques aspects prêts. Là où array_map() retourne un tableau, array_walk() travaille directement sur le serveur.
Les arguments sont inversés, et la fonction passe en deuxième, et le tableau en premier. Array_walk() est aussi capable de prendre des arguments fixes, ce que array_map() ne peut pas faire, sans passer par la création d'un tableau d'arguments identiques à l'aide d'array_fill().
Par ailleurs, la clé est automatiquement fournie comme deuxième argument. Tous les autres arguments Voici l'exemple précédent, réécrit avec array_walk().
<?php $array = array_flip(range('a', 'f')); array_walk($array, 'transforme'); print_r($array); function transforme(&$value, $key) { $value = "La clé $key est associée a la valeur $value"; } ?>
A mémoriser
- Il est possible de donner simplement le tableau à array_filter(), et dans ce cas, toutes les valeurs qui sont équivalentes à false seront supprimées.
- La fonction de transformation de array_map() sera appliqué au plus grand nombre d'éléments possible. Généralement, les tableaux donnés sont tous de même taille.
- array_walk() is capable to work with multi-dimensionnal array, with array_walk_recursive()
| < Précédent | Suivant > |
|---|
Commentaires
Vous pouvez ajouter votre commentaire! |
Vous devez vous connecter pour commenter


