1--TEST--
2Test array_walk_recursive() function : usage variations - 'input' array with different values
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
10/*
11 * Testing array_walk_recursive() with following types of 'input' arrays:
12 *    integer, float, string, bool, null, empty & mixed
13*/
14
15// callback function
16/*
17 * Prototype : print_value(mixed $value, int $key, int $count)
18 * Parameters : $value - array entries(values)
19 *              $key - keys in given input array
20 *              $count - extra parameter used as an index
21 * Description : prints the array values with keys and count value
22 */
23function print_value($value, $key, $count)
24{
25  echo  $count." : ".$key." ".$value."\n";
26}
27
28echo "*** Testing array_walk_recursive() : 'input' array with different values***\n";
29
30// different arrays as input
31$input_values = array(
32
33       // integer values
34/*1*/  array(array(1, 0, -10), array(023, -041), array(0x5A, 0X1F, -0x6E)),
35
36       // float value
37       array(array(3.4, 0.8, -2.9), array(6.25e2, 8.20E-3)),
38
39       // string values
40       array('Mango', array("Apple", 'Orange', "Lemon")),
41
42       // bool values
43/*4*/  array( array(true, false), array(TRUE, FALSE)),
44
45       // null values
46       array( array(null), array(NULL)),
47
48       // empty array
49       array(),
50
51       // binary array
52       array(array(b'binary')),
53
54       // mixed array
55/*8*/  array(16, 8.345, array("Fruits"), array(true, null), array(FALSE), array(-98, 0.005, 'banana'))
56);
57
58for($count = 0; $count < count($input_values); $count++) {
59  echo "\n-- Iteration ".($count + 1)." --\n";
60  var_dump( array_walk_recursive($input_values[$count], "print_value", $count+1));
61}
62echo "Done"
63?>
64--EXPECTF--
65*** Testing array_walk_recursive() : 'input' array with different values***
66
67-- Iteration 1 --
681 : 0 1
691 : 1 0
701 : 2 -10
711 : 0 19
721 : 1 -33
731 : 0 90
741 : 1 31
751 : 2 -110
76bool(true)
77
78-- Iteration 2 --
792 : 0 3.4
802 : 1 0.8
812 : 2 -2.9
822 : 0 625
832 : 1 0.0082
84bool(true)
85
86-- Iteration 3 --
873 : 0 Mango
883 : 0 Apple
893 : 1 Orange
903 : 2 Lemon
91bool(true)
92
93-- Iteration 4 --
944 : 0 1
954 : 1
964 : 0 1
974 : 1
98bool(true)
99
100-- Iteration 5 --
1015 : 0
1025 : 0
103bool(true)
104
105-- Iteration 6 --
106bool(true)
107
108-- Iteration 7 --
1097 : 0 binary
110bool(true)
111
112-- Iteration 8 --
1138 : 0 16
1148 : 1 8.345
1158 : 0 Fruits
1168 : 0 1
1178 : 1
1188 : 0
1198 : 0 -98
1208 : 1 0.005
1218 : 2 banana
122bool(true)
123Done
124