1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
--TEST--
Test array_walk() function : usage variations - 'input' argument as diff. associative arrays
--FILE--
<?php
/* Prototype : bool array_walk(array $input, string $funcname [, mixed $userdata])
* Description: Apply a user function to every member of an array
* Source code: ext/standard/array.c
*/
/*
* Passing 'input' argument as an associative array
* with Numeric & string keys
*/
echo "*** Testing array_walk() : 'input' as an associative array ***\n";
// callback functions
/* Prototype : for_numeric( int $value, int $key, int $user_data)
* Parameters : $value - value from key/value pair of the array
* $key - key from key/value pair of the array
* $user_data - data to be added to 'value'
* Description : Function adds values with keys & user_data
*/
function for_numeric($value, $key, $user_data)
{
// dump the input values to see if they are
// passed with correct type
var_dump($key);
var_dump($value);
var_dump($user_data);
echo "\n"; // new line to separate the output between each element
}
/* Prototype : for_string( string $value, string $key)
* Parameters : $value - values in given input array
* $key - keys in given input array
* Description : Function appends key to the value
*/
function for_string($value, $key)
{
// dump the input values to see if they are
// passed with correct type
var_dump($key);
var_dump($value);
echo "\n"; // new line to separate the output between each element
}
/* Prototype : for_mixed( mixed $value, mixed $key)
* Parameters : $value - values in given input array
* $key - keys in given input array
* Description : Function displays each element of an array with keys
*/
function for_mixed($value, $key)
{
// dump the input values to see if they are
// passed with correct type
var_dump($key);
var_dump($value);
echo "\n"; // new line to separate the output between each element
}
// Numeric keys
$input = array( 1 => 25, 5 => 12, 0 => -80, -2 => 100, 5 => 30);
echo "-- Associative array with numeric keys --\n";
var_dump( array_walk($input, "for_numeric", 10));
// String keys
$input = array( "a" => "Apple", 'b' => 'Bananna', "c" => "carrot", 'o' => "Orange");
echo "-- Associative array with string keys --\n";
var_dump( array_walk($input, "for_string"));
// binary keys
$input = array( b"a" => "Apple", b"b" => "Banana");
echo "-- Associative array with binary keys --\n";
var_dump( array_walk($input, "for_string"));
// Mixed keys - numeric/string
$input = array( 0 => 1, 1 => 2, "a" => "Apple", "b" => "Banana", 2 =>3);
echo "-- Associative array with numeric/string keys --\n";
var_dump( array_walk($input, "for_mixed"));
echo "Done"
?>
--EXPECTF--
*** Testing array_walk() : 'input' as an associative array ***
-- Associative array with numeric keys --
int(1)
int(25)
int(10)
int(5)
int(30)
int(10)
int(0)
int(-80)
int(10)
int(-2)
int(100)
int(10)
bool(true)
-- Associative array with string keys --
string(1) "a"
string(5) "Apple"
string(1) "b"
string(7) "Bananna"
string(1) "c"
string(6) "carrot"
string(1) "o"
string(6) "Orange"
bool(true)
-- Associative array with binary keys --
string(1) "a"
string(5) "Apple"
string(1) "b"
string(6) "Banana"
bool(true)
-- Associative array with numeric/string keys --
int(0)
int(1)
int(1)
int(2)
string(1) "a"
string(5) "Apple"
string(1) "b"
string(6) "Banana"
int(2)
int(3)
bool(true)
Done
|