ARRAY_WALK |
Tableau : Marche |
PHP 4.0+ |
Syntaxe
function array_walk($array,$funcname);
|
function array_walk($array,$funcname,$userdata);
|
Paramètres
Nom |
Description |
$array |
Ce paramètre permet d'indiquer les tableaux à traiter. |
$funcname |
Ce paramètre permet d'indiquer le nom de la fonction utilisé pour le traitement. Cette fonction recevra le tableau comme premier paramètre et la clef et la valeur comme second paramètre. |
$userdata |
Ce paramètre sera passer comme troisième paramètre à la fonction utilisateur s'il existe. |
Retour
Valeur |
Description |
FALSE |
Cette valeur permet d'indiquer qu'un problème est survenu. |
TRUE |
Cette valeur permet d'indiquer que l'opération s'est correctement effectué. |
Description
Cette fonction permet d'exécuter une fonction utilisateur sur chacune des cellules d'un tableau.
Remarques
- Modification directe du tableau : La fonction array_walk() applique une fonction de rappel (callback) à chaque élément du tableau. Contrairement à
certaines autres fonctions retournant un nouveau tableau, array_walk() modifie directement le tableau original en fonction de la logique définie dans la fonction de
rappel. Cela permet de modifier les éléments du tableau sans en créer une copie.
- Accès à la clef et à la valeur : La fonction de rappel utilisée avec array_walk() reçoit à la fois la valeur de l'élément et sa clef en tant que paramètres.
Cela permet de manipuler les valeurs en fonction de leur clef, ce qui peut être utile lorsque vous souhaitez effectuer des transformations spécifiques en fonction de la clef.
- Retour de valeurs par référence : La fonction de rappel peut modifier les valeurs directement, car ces dernières sont transmises par référence. Cela signifie que
si vous modifiez une valeur dans la fonction de rappel, cette modification sera immédiatement reflétée dans le tableau original, ce qui peut être pratique si vous devez modifier
les valeurs en place.
- Fonction utile pour la transformation de tableaux : array_walk() est souvent utilisée pour appliquer une transformation uniforme à chaque élément d'un tableau.
Par exemple, vous pouvez convertir toutes les valeurs en minuscules, ajouter un préfixe à toutes les clefs ou effectuer toute autre transformation logicielle nécessaire, tout en
modifiant directement le tableau.
- Limitation des tableaux multidimensionnels : array_walk() s'applique uniquement au premier niveau d'un tableau. Si vous souhaitez appliquer une fonction de
rappel à chaque élément d'un tableau multidimensionnel, vous devrez soit utiliser array_walk() de manière récursive (via une fonction personnalisée), soit utiliser une autre
méthode comme array_map() pour chaque sous-tableau.
- Retours de fonction de rappel : La fonction de rappel utilisée avec array_walk() ne doit pas nécessairement retourner une valeur, car elle agit directement sur
les éléments du tableau passé par référence. Cependant, si la fonction de rappel retourne une valeur, elle sera ignorée par array_walk(), car les modifications sont faites directement
sur les éléments du tableau.
- Utilisation avec des tableaux associatifs : array_walk() fonctionne aussi bien avec des tableaux associatifs qu'avec des tableaux indexés numériquement. La
fonction de rappel reçoit la clef et la valeur de chaque élément, ce qui permet une manipulation très flexible, notamment dans le cas des tableaux associatifs où les clefs peuvent
avoir une signification particulière.
- Impact sur la performance : Bien que array_walk() soit très pratique pour manipuler des éléments directement dans un tableau, il peut devenir coûteux en termes
de performances pour de très grands tableaux, surtout si la fonction de rappel est complexe ou si elle modifie beaucoup d'éléments. Il est important de tenir compte de la taille du
tableau et de la logique de la fonction de rappel pour éviter des lenteurs notables.
Références
PHP 4 - Guide du développeur, Edition First Interactive, Blake Schwendiman, 2002, ISBN: 2-84427-283-5, page 366 à 367
Dernière mise à jour : Dimanche, le 22 mars 2015