(PHP 4, PHP 5, PHP 7, PHP 8)
array_walk — Ejecuta una función proporcionada por el usuario en cada uno de los elementos de un array
Ejecuta la función callback
definida por el usuario
en cada elemento del array array
.
array_walk() no es afectado por el puntero interno
del array array
.
array_walk() recorrerá el array en su totalidad
sin tener en cuenta la posición del puntero.
array
El array de entrada.
callback
Típicamente, callback
toma dos parámetros.
El valor del parámetro array
siendo el primero y la clave/índice, el segundo.
Nota:
Si
callback
debe trabajar con los verdaderos valores del array, especifique que el primer parámetro decallback
debe ser pasado por referencia. Entonces, los elementos serán directamente modificados en el array.
Nota:
Varias funciones internas (por ejemplo, strtolower()) emiten una alerta si más argumentos que los esperados son pasados a la función y no son utilizables directamente como
callback
.
Solo los valores del array
pueden ser modificados;
su estructura no puede ser modificada, es decir, no se pueden añadir, eliminar
o reordenar elementos. Si la función de callback no respeta esta
regla, el comportamiento se volverá indefinido e impredecible.
arg
Si el parámetro opcional arg
es proporcionado, será pasado como tercer parámetro a la
función definida por el usuario callback
.
Siempre devuelve true
.
A partir de PHP 7.1.0, un ArgumentCountError
será lanzado si la función callback
requiere más
de 2 parámetros (el valor y la clave del elemento del array),
o más de 3 si arg
también es proporcionado.
Anteriormente, en este caso un error de nivel
E_WARNING
habría sido generado cada vez que la función
array_walk() llama a callback
.
Versión | Descripción |
---|---|
8.2.0 |
The return type is true now; previously, it was bool.
|
8.0.0 |
Si callback espera que el segundo o tercer
parámetro sea pasado por referencia, esta función ahora emite
una E_WARNING .
|
Ejemplo #1 Ejemplo con array_walk()
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$item1, $key, $prefix)
{
$item1 = "$prefix: $item1";
}
function test_print($item2, $key)
{
echo "$key. $item2\n";
}
echo "Antes ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... y después :\n";
array_walk($fruits, 'test_print');
?>
El resultado del ejemplo sería:
Antes ...: d. lemon a. orange b. banana c. apple ... y después : d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple
Ejemplo #2 Ejemplo de array_walk() con el uso de una función anónima
<?php
$elements = ['a', 'b', 'c'];
array_walk($elements, function ($value, $key) {
echo "{$key} => {$value}\n";
});
?>
El resultado del ejemplo sería:
0 => a 1 => b 2 => c