useful recursive PHP functions

recursively ...

PHP Manual for

array_walk

(PHP 3>= 3.0.3, PHP 4 )

array_walk --  Apply a user function to every member of an array

Description

bool array_walk ( array array, callback function [, mixed userdata])

Returns TRUE on success or FALSE on failure.

Applies the user-defined function function to each element of the array array. Typically, function takes on two parameters. The array parameter's value being the first, and the key/index second. If the optional userdata parameter is supplied, it will be passed as the third parameter to the callback function .

If function function requires more parameters than given to it, an error of level E_WARNING will be generated each time array_walk() calls function . These warnings may be suppressed by prepending the PHP error operator @ to the array_walk() call, or by using error_reporting().

Note: If function needs to be working with the actual values of the array, specify the first parameter of function as a reference. Then, any changes made to those elements will be made in the original array itself.

Note: Passing the key and userdata to function was added in 4.0.0

array_walk() is not affected by the internal array pointer of array . array_walk() will walk through the entire array regardless of pointer position. To reset the pointer, use reset(). In PHP 3, array_walk() resets the pointer.

Users may not change the array itself from the callback function. e.g. Add/delete elements, unset elements, etc. If the array that array_walk() is applied to is changed, the behavior of this function is undefined, and unpredictable.

Example 1. array_walk() example

<?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<br />\n";
}

echo
"Before ...:\n";
array_walk($fruits, 'test_print');

array_walk($fruits, 'test_alter', 'fruit');
echo
"... and after:\n";

array_walk($fruits, 'test_print');
?>

The printout of the program above will be:

Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple

See also create_function(), list(), foreach, each(), and call_user_func_array().

© 2012 lixlpixel