1--TEST--
2Test array_walk_recursive() function : basic functionality - regular array
3--FILE--
4<?php
5/* Prototype  : bool array_walk_recursive(array $input, string $funcname [, mixed $userdata])
6 * Description: Apply a user function to every member of an array
7 * Source code: ext/standard/array.c
8*/
9
10echo "*** Testing array_walk_recursive() : basic functionality ***\n";
11
12// regular array
13$fruits = array("lemon", array("orange", "banana"), array("apple"));
14
15/*  Prototype : test_print(mixed $item, mixed $key)
16 *  Parameters : item - item in key/item pair
17 *               key - key in key/item pair
18 *  Description : prints the array values with keys
19 */
20function test_print($item, $key)
21{
22   // dump the arguments to check that they are passed
23   // with proper type
24   var_dump($item); // value
25   var_dump($key);  // key
26   echo "\n"; // new line to separate the output between each element
27}
28function with_userdata($item, $key, $user_data)
29{
30   // dump the arguments to check that they are passed
31   // with proper type
32   var_dump($item); // value
33   var_dump($key);  // key
34   var_dump($user_data); // user supplied data
35   echo "\n"; // new line to separate the output between each element
36}
37
38echo "-- Using array_walk_recursive() with default parameters to show array contents --\n";
39var_dump( array_walk_recursive($fruits, 'test_print'));
40
41echo "-- Using array_walk_recursive() with all parameters --\n";
42var_dump( array_walk_recursive($fruits, 'with_userdata', "Added"));
43
44echo "Done";
45?>
46--EXPECT--
47*** Testing array_walk_recursive() : basic functionality ***
48-- Using array_walk_recursive() with default parameters to show array contents --
49string(5) "lemon"
50int(0)
51
52string(6) "orange"
53int(0)
54
55string(6) "banana"
56int(1)
57
58string(5) "apple"
59int(0)
60
61bool(true)
62-- Using array_walk_recursive() with all parameters --
63string(5) "lemon"
64int(0)
65string(5) "Added"
66
67string(6) "orange"
68int(0)
69string(5) "Added"
70
71string(6) "banana"
72int(1)
73string(5) "Added"
74
75string(5) "apple"
76int(0)
77string(5) "Added"
78
79bool(true)
80Done
81