(PHP 5, PHP 7, PHP 8)
array_walk_recursive — Applique une fonction de rappel récursivement à chaque membre d'un tableau
Applique la fonction utilisateur callback
à chaque élément du tableau array. Cette
fonction parcourt récursivement les sous-tableaux.
Passer un objet comme paramètre array est autorisé ; il sera
traité comme s'il avait été
converti en tableau au préalable.
Que la fonction commence avec un tableau ou un objet, elle ne parcourra pas
récursivement les objets internes.
arrayLe tableau d'entrée.
callback
Typiquement, callback prend 2 paramètres.
Le paramètre array, représentant la valeur, est
le premier, l'index/clé, le deuxième.
Note:
Si
callbackdoit être exécuté avec les valeurs réelles du tableau, spécifier le premier paramètre decallbackpar référence. Alors, tout changement effectué sur les éléments de ce tableau sera également effectué sur le tableau original.
arg
Si le paramètre optionnel arg est fourni,
il sera passé comme troisième paramètre à la fonction de rappel
callback.
Retourne toujours true.
| Version | Description |
|---|---|
| 8.2.0 |
Le type de retour est maintenant true, auparavant il était bool.
|
Exemple #1 Exemple avec array_walk_recursive()
<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key)
{
echo "La clé $key contient l'élément $item\n";
}
array_walk_recursive($fruits, 'test_print');
?>L'exemple ci-dessus va afficher :
La clé a contient l'élément apple La clé b contient l'élément banana La clé sour contient l'élément lemon
On aura noté que la clé 'sweet'
n'est jamais affichée. Toute clé qui est associée
à un tableau n'est pas passée à la fonction de rappel.
array_walk_recursive() peut aussi être utilisée pour mettre à jour les valeurs sur place, en passant le paramètre de la fonction de rappel par référence.
Exemple #2 Mise à jour des valeurs sur place
<?php
$sweet = ['a' => 'apple', 'b' => 'banana'];
$fruits = ['sweet' => $sweet, 'sour' => 'lemon'];
function test_update(&$item)
{
$item = strtoupper($item);
}
function test_print($item, $key)
{
echo "La clé $key contient l'élément $item\n";
}
array_walk_recursive($fruits, 'test_update');
array_walk_recursive($fruits, 'test_print');
?>L'exemple ci-dessus va afficher :
La clé a contient l'élément APPLE La clé b contient l'élément BANANA La clé sour contient l'élément LEMON