array_walk
Apply a user function to every member of an array
Description
intarray_walk
arrayarray
stringfunc
mixeduserdata
Applies the user-defined function named by func
to each element of array.
func will be passed array value as the
first parameter and array key as the second parameter. If
userdata is supplied, it will be passed as
the third parameter to the user function. func
must be a user-defined function, and can't be a native PHP function.
Thus, you can't use array_walk straight with
str2lower, you must build a user-defined function
with it first, and pass this function as argument.
¬e.func-callback;
If func requires more than two or three
arguments, depending on userdata, a
warning will be generated each time
array_walk calls
func. These warnings may be suppressed by
prepending the '@' sign to the array_walk
call, or by using error_reporting.
If func needs to be working with the
actual values of the array, specify that the first parameter of
func should be passed by reference. Then
any changes made to those elements will be made in the array
itself.
Modifying the array from inside func
may cause unpredictable behavior.
Passing the key and userdata to func was
added in 4.0.
In PHP 4 reset needs to be called as
necessary since array_walk does not reset
the array by default.
Users may not change the array itself from the callback
function. e.g. Add/delete element, unset the array that
array_walk is applied to. If the array is
changed, the behavior of this function is undefined.
array_walk example
"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 "Before ...:\n";
array_walk ($fruits, 'test_print');
reset ($fruits);
array_walk ($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
reset ($fruits);
array_walk ($fruits, 'test_print');
]]>
The printout of the program above will be:
See also each and list.