Annotation of embedaddon/php/ext/standard/tests/array/array_walk_closure.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: array_walk() closure tests
3: --FILE--
4: <?php
5:
6: var_dump(array_walk());
7:
8: $ar = false;
9: var_dump(array_walk($ar, $ar));
10:
11: $ar = NULL;
12: var_dump(array_walk($ar, $ar));
13:
14: $ar = ["one" => 1, "two"=>2, "three" => 3];
15: var_dump(array_walk($ar, function(){ var_dump(func_get_args());}));
16:
17: echo "\nclosure with array\n";
18: $ar = ["one" => 1, "two"=>2, "three" => 3];
19: $user_data = ["sum" => 42];
20: $func = function($value, $key, &$udata) {
21: var_dump($udata);
22: $udata["sum"] += $value;
23: };
24:
25: var_dump(array_walk($ar, $func, $user_data));
26: echo "End result:";
27: var_dump($user_data["sum"]);
28:
29: echo "\nclosure with use\n";
30: $ar = ["one" => 1, "two"=>2, "three" => 3];
31: $user_data = ["sum" => 42];
32: $func = function($value, $key) use (&$user_data) {
33: var_dump($user_data);
34: $user_data["sum"] += $value;
35: };
36:
37: var_dump(array_walk($ar, $func, $user_data));
38: echo "End result:";
39: var_dump($user_data["sum"]);
40:
41:
42: echo "\nclosure with object\n";
43: $ar = ["one" => 1, "two"=>2, "three" => 3];
44: $user_data = (object)["sum" => 42];
45: $func = function($value, $key, &$udata) {
46: var_dump($udata);
47: $udata->sum += $value;
48: };
49:
50: var_dump(array_walk($ar, $func, $user_data));
51: echo "End result:";
52: var_dump($user_data->sum);
53:
54:
55:
56: echo "\nfunction with object\n";
57: function sum_it_up_object($value, $key, $udata)
58: {
59: var_dump($udata);
60: $udata->sum += $value;
61: }
62:
63: $ar = ["one" => 1, "two"=>2, "three" => 3];
64: $user_data = (object)["sum" => 42];
65:
66: var_dump(array_walk($ar, "sum_it_up_object", $user_data));
67: echo "End result:";
68: var_dump($user_data->sum);
69:
70:
71: echo "\nfunction with array\n";
72: function sum_it_up_array($value, $key, $udata)
73: {
74: var_dump($udata);
75: $udata['sum'] += $value;
76: }
77:
78: $ar = ["one" => 1, "two"=>2, "three" => 3];
79: $user_data = ["sum" => 42];
80:
81: var_dump(array_walk($ar, "sum_it_up_array", $user_data));
82: echo "End result:";
83: var_dump($user_data['sum']);
84:
85: echo "\nclosure and exception\n";
86: $ar = ["one" => 1, "two"=>2, "three" => 3];
87: try {
88: var_dump(array_walk($ar, function($v, $k) { if ($v == 2) throw new Exception; } ));
89: } catch (Exception $e) {
90: var_dump($e->getTrace());
91: }
92:
93:
94: echo "Done\n";
95: ?>
96: --EXPECTF--
97: Warning: array_walk() expects at least 2 parameters, 0 given in %s on line %d
98: NULL
99:
100: Warning: array_walk() expects parameter 1 to be array, boolean given in %s on line %d
101: NULL
102:
103: Warning: array_walk() expects parameter 1 to be array, null given in %s on line %d
104: NULL
105: array(2) {
106: [0]=>
107: int(1)
108: [1]=>
109: string(3) "one"
110: }
111: array(2) {
112: [0]=>
113: int(2)
114: [1]=>
115: string(3) "two"
116: }
117: array(2) {
118: [0]=>
119: int(3)
120: [1]=>
121: string(5) "three"
122: }
123: bool(true)
124:
125: closure with array
126: array(1) {
127: ["sum"]=>
128: int(42)
129: }
130: array(1) {
131: ["sum"]=>
132: int(43)
133: }
134: array(1) {
135: ["sum"]=>
136: int(45)
137: }
138: bool(true)
139: End result:int(42)
140:
141: closure with use
142: array(1) {
143: ["sum"]=>
144: int(42)
145: }
146: array(1) {
147: ["sum"]=>
148: int(43)
149: }
150: array(1) {
151: ["sum"]=>
152: int(45)
153: }
154: bool(true)
155: End result:int(48)
156:
157: closure with object
158: object(stdClass)#1 (1) {
159: ["sum"]=>
160: int(42)
161: }
162: object(stdClass)#1 (1) {
163: ["sum"]=>
164: int(43)
165: }
166: object(stdClass)#1 (1) {
167: ["sum"]=>
168: int(45)
169: }
170: bool(true)
171: End result:int(48)
172:
173: function with object
174: object(stdClass)#2 (1) {
175: ["sum"]=>
176: int(42)
177: }
178: object(stdClass)#2 (1) {
179: ["sum"]=>
180: int(43)
181: }
182: object(stdClass)#2 (1) {
183: ["sum"]=>
184: int(45)
185: }
186: bool(true)
187: End result:int(48)
188:
189: function with array
190: array(1) {
191: ["sum"]=>
192: int(42)
193: }
194: array(1) {
195: ["sum"]=>
196: int(42)
197: }
198: array(1) {
199: ["sum"]=>
200: int(42)
201: }
202: bool(true)
203: End result:int(42)
204:
205: closure and exception
206: array(2) {
207: [0]=>
208: array(2) {
209: ["function"]=>
210: string(9) "{closure}"
211: ["args"]=>
212: array(2) {
213: [0]=>
214: int(2)
215: [1]=>
216: string(3) "two"
217: }
218: }
219: [1]=>
220: array(4) {
221: ["file"]=>
222: string(%d) "%s"
223: ["line"]=>
224: int(%d)
225: ["function"]=>
226: string(10) "array_walk"
227: ["args"]=>
228: array(2) {
229: [0]=>
230: &array(3) {
231: ["one"]=>
232: int(1)
233: ["two"]=>
234: int(2)
235: ["three"]=>
236: int(3)
237: }
238: [1]=>
239: object(Closure)#2 (1) {
240: ["parameter"]=>
241: array(2) {
242: ["$v"]=>
243: string(10) "<required>"
244: ["$k"]=>
245: string(10) "<required>"
246: }
247: }
248: }
249: }
250: }
251: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>