array_walk

(PHP 4, PHP 5, PHP 7, PHP 8)

array_walkEjecuta una función proporcionada por el usuario en cada uno de los elementos de un array

Descripción

array_walk(array|object &$array, callable $callback, mixed $arg = null): true

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.

Parámetros

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 de callback 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.

Valores devueltos

Siempre devuelve true.

Errores/Excepciones

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.

Historial de cambios

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.

Ejemplos

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

Ver también