(PHP 5, PHP 7, PHP 8)
array_walk_recursive — Aplica una función de retrollamada de manera recursiva a cada miembro de un array
Aplica la función de usuario callback
a cada elemento del array array. Esta
función se reproducirá en todas las profundidades del array.
Se permite pasar un objeto como array, y se tratará
como si hubiera sido
convertido previamente en un array.
Independientemente de si la función comenzó con un array o un objeto,
no recursará en los objetos internos.
arrayEl array de entrada.
callback
Típicamente, callback toma 2 argumentos.
El argumento array, representando el valor, es
el primero, el índice/clave, el segundo.
Nota:
Si
callbackdebe ser ejecutado con los valores actuales del array, especifique el primer argumento decallbackpor referencia. Entonces, cualquier cambio efectuado en los elementos de este array será también efectuado en el array original.
arg
Si el argumento opcional arg es proporcionado,
será pasado como tercer argumento a la función de retrollamada
callback.
Retorna siempre true.
| Versión | Descripción |
|---|---|
| 8.2.0 |
El tipo de retorno es ahora true, anteriormente era bool.
|
Ejemplo #1 Ejemplo con array_walk_recursive()
<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key)
{
echo "La clave $key contiene el elemento $item\n";
}
array_walk_recursive($fruits, 'test_print');
?>El ejemplo anterior mostrará:
La clave a contiene el elemento apple La clave b contiene el elemento banana La clave sour contiene el elemento lemon
Se habrá notado que la clave 'sweet'
nunca es mostrada. Cualquier clave que esté asociada
a un array no es pasada a la función de retrollamada.
array_walk_recursive() también puede utilizarse para actualizar los valores in situ pasando el parámetro de la retrollamada por referencia.
Ejemplo #2 Actualización de los valores in situ
<?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 clave $key contiene el elemento $item\n";
}
array_walk_recursive($fruits, 'test_update');
array_walk_recursive($fruits, 'test_print');
?>El ejemplo anterior mostrará:
La clave a contiene el elemento APPLE La clave b contiene el elemento BANANA La clave sour contiene el elemento LEMON