(PHP 4, PHP 5)
array_walk — Aplicar una función de usuario a cada miembro de un array
Aplica la función definida por el usuario dada por funcname
a cada
elemento del array dado por array
.
array_walk() no le afecta el puntero de arrays
interno de array
. array_walk()
recorrerá el array completo sin tener en cuenta la posición del puntero.
array
El array de entrada.
funcname
Normalmente, funcname
asume dos parámetros.
El primero, los valores de los parámetros de array
, y el segundo
la clave/índice.
Nota:
Si
funcname
necesita trabajar con los valores reales del array, especifique el primer parámetro defuncname
como una referencia. Así, cualquier cambio hecho a esos elementos serán hechos al mismo array original.
Nota:
Muchas funciones internas (por ejemplo strtolower()) lanzarán una advertencia si se pasan más argumentos de los esperados y no so usables directamente como
funcname
.
Sólo se pueden cambiar potencialmente los valores del parámetro array
;
no se puede alterar su estructura, esto es, el programador no puede
añadir, destruir o reordenar elementos. Si la llamada de retorno no respeta este
requisito, el comportamiento de esta función será indefinido e
impredecible.
userdata
Si se proporciona el parámetro opcional userdata
, éste
será pasado como el tercer parámetro de la función de llamada de retorno dada por
funcname
.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Si la función funcname
requiere más parámetros que
los dados, se generará un error de nivel
E_WARNING cada vez que array_walk()
llame a funcname
. Estas advertencias pueden ser suprimidas
añadiendo al inicio el operador de error de PHP
@ en la llamada a
array_walk(), o usando
error_reporting().
Ejemplo #1 Ejemplo de array_walk()
<?php
$frutas = array("d" => "limón", "a" => "naranja", "b" => "banana", "c" => "manzana");
function test_alter(&$elemento1, $clave, $prefijo)
{
$elemento1 = "$prefijo: $elemento1";
}
function test_print($elemento2, $clave)
{
echo "$clave. $elemento2<br />\n";
}
echo "Antes ...:\n";
array_walk($frutas, 'test_print');
array_walk($frutas, 'test_alter', 'fruta');
echo "... y después:\n";
array_walk($frutas, 'test_print');
?>
El resultado del ejemplo sería:
Antes ...: d. limón a. naranja b. banana c. manzana ... y después: d. fruta: limón a. fruta: naranja b. fruta: banana c. fruta: manzana