Forum und email

array_walk

(PHP 4, PHP 5)

array_walk — Aplica una función del usuario a cada elemento de una matriz.

Descripción

int array_walk ( array &$matriz , string $func [, mixed $datosvarios ] )

Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo.

Aplica la función llamada func a cada elemento de la matriz . La función func recibirá el valor de la matriz como primer parámetro y la clave como segundo. Si se proporciona el parámetro datosvarios será pasado como tercer parámetro a la función de usuario.

Si func necesita más de dos o 3 argumentos, dependiendo de datosvarios , se generará un aviso cada vez que array_walk() llama a func . Estos avisos pueden suprimirse si se pone @ antes de la llamada a array_walk(), o usando la función error_reporting().

Note: Si func precisa trabajar con los valores reales de la matriz, especifique que el valor del primer parámetro de func debe pasarse por referencia. Desde ese instante, los cambios realizados sobre dichos elementos también serán realizados en la propia matriz.

Note: El pasar la clave y los datos de usuario a func fue una característica añadida en PHP 4.0.0

array_walk() no es afectado por el apuntador interno del parámetro matriz . array_walk() avanzará por toda la matriz sin importar la posición del apuntador. Para reinicializar el apuntador, use reset(). en PHP 3, array_walk() reinicializa el apuntador.

No se debe cambiar la matriz desde la llamada a la función, ej. agregar/borrar elementos, vaciar elementos, etc. si la matriz que está siendo usada por array_walk() cambia, el comportamiento de esta función será indefinido e impredecible.

Example#1 Ejemplo de array_walk()

<?php
$frutas 
= array ("d"=>"limon""a"=>"naranja""b"=>"platano""c"=>"manzana");

function 
test_alterar ($item1$clave$prefix) {
   
$item1 "$prefix: $item1";
}

function 
test_ver ($item2$clave) {
   echo 
"$clave. $item2<br />\n";
}

echo 
"Antes...:\n";
array_walk ($frutas'test_ver');

array_walk ($frutas'test_alterar''fruta');
echo 
"...y despues:\n";

array_walk ($frutas'test_ver');
?>

El resultado del ejemplo seria:

Antes...:
d. limon
a. naranja
b. platano
c. manzana
...y despues:
d. fruta: limon
a. fruta: naranja
b. fruta: platano
c. fruta: manzana

Vea también array_walk_recursive(), create_function(), list(), foreach, each(), call_user_func_array(), array_map(), information about the callback type.