array_walk_recursive
(PHP 5, PHP 7, PHP 8)
Apply a user function recursively to every member of an array
Description
Applies the user-defined callback function to each element of the array. This function will recurse into deeper arrays.
Passing an object as the array is allowed, and will be treated as if it had been cast to an array first. Regardless of whether the function started with an array or an object, it will not recurse into inner objects.
Parameters
arrayThe input array.
callbackTypically,
callbacktakes on two parameters. Thearrayparameter's value being the first, and the key/index second.NoteIf
callbackneeds to be working with the actual values of the array, specify the first parameter ofcallbackas a reference. Then, any changes made to those elements will be made in the original array itself.argIf the optional
argparameter is supplied, it will be passed as the third parameter to thecallback.
Return Values
Always
Changelog
| Version | Description |
|---|
Examples
array_walk_recursive() example
<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function test_print($item, $key)
{
echo "$key holds $item\n";
}
array_walk_recursive($fruits, 'test_print');
?>The above example will output:
a holds apple
b holds banana
sour holds lemonYou may notice that the key 'sweet' is never displayed. Any key that holds an array will not be passed to the function.
array_walk_recursive() can also be used to update values in place by passing the callback parameter by reference.
Updating values in place
<?php
$sweet = ['a' => 'apple', 'b' => 'banana'];
$fruits = ['sweet' => $sweet, 'sour' => 'lemon'];
function test_update(&$item)
{
$item = strtoupper($item);
}
function test_print($item, $key)
{
echo "$key holds $item\n";
}
array_walk_recursive($fruits, 'test_update');
array_walk_recursive($fruits, 'test_print');
?>The above example will output:
a holds APPLE
b holds BANANA
sour holds LEMON