Annotation of embedaddon/php/ext/standard/tests/array/each.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test each() function
3: --FILE--
4: <?php
5: /* Return the current key and value pair from an array
6: and advance the array cursor */
7:
8: echo "*** Testing each() : basic functionality ***\n";
9: $arrays = array (
10: array(0),
11: array(1),
12: array(-1),
13: array(1, 2, 3, 4, 5),
14: array(-1, -2, -3, 6, 7, 8),
15: array("a", "ab", "abc", "abcd"),
16: array("1" => "one", "2" => "two", "3" => "three", "4" => "four"),
17: array("one" => 1, "two" => 2, 3 => "three", 4 => 4, "" => 5,
18: " " => 6, "\x00" => "\x000", "\0" => "\0", "" => "",
19: TRUE => TRUE, FALSE => FALSE, NULL => NULL
20: ),
21: array("1.5" => "one.5", "-2.0" => "negative2.0"),
22: array(-5 => "negative5", -.05 => "negative.05")
23: );
24:
25: /* loop through to check working of each() on different arrays */
26: $i = 0;
27: while( list( $key, $sub_array) = each($arrays) ) {
28: echo "-- Iteration $i --\n";
29: $c = count ($sub_array);
30: $c++; // increment by one to create the situation
31: // of accessing beyond array size
32: while ( $c ) {
33: var_dump( each($sub_array) );
34: $c --;
35: }
36: /* assignment of an array to another variable resets the internal
37: pointer of the array. check this and ensure that each returns
38: the first element after the assignment */
39: $new_array = $sub_array;
40: var_dump( each($sub_array) );
41: echo "\n";
42: $i++;
43: }
44:
45: echo "\n*** Testing each() : possible variations ***\n";
46: echo "-- Testing each() with reset() function --\n";
47: /* reset the $arrays and use each to get the first element */
48: var_dump( reset($arrays) );
49: var_dump( each($arrays) ); // first element
50: list($key, $sub_array) = each($arrays); // now second element
51: var_dump( each($sub_array) );
52:
53:
54: echo "-- Testing each() with resources --\n";
55: $fp = fopen(__FILE__, "r");
56: $dfp = opendir(".");
57:
58: $resources = array (
59: "file" => $fp,
60: "dir" => $dfp
61: );
62:
63: for( $i = 0; $i < count($resources); $i++) {
64: var_dump( each($resources) );
65: }
66:
67: echo "-- Testing each with objects --\n";
68:
69: class each_class {
70: private $var_private = 100;
71: protected $var_protected = "string";
72: public $var_public = array(0, 1, TRUE, NULL);
73: }
74: $each_obj = new each_class();
75: for( $i = 0; $i <= 2; $i++ ) {
76: var_dump( each($each_obj) );
77: }
78:
79: echo "-- Testing each() with null array --\n";
80: $null_array = array();
81: var_dump( each($null_array) );
82:
83:
84: echo "\n*** Testing error conditions ***\n";
85:
86: /* unexpected number of arguments */
87: var_dump( each() ); // args = 0
88: var_dump( each($null_array, $null_array) ); // args > expected
89:
90: /* unexpected argument type */
91: $var=1;
92: $str ="string";
93: $fl = "15.5";
94: var_dump( each($var) );
95: var_dump( each($str) );
96: var_dump( each($fl) );
97:
98: // close resourses used
99: fclose($fp);
100: closedir($dfp);
101:
102: echo "Done\n";
103: ?>
104:
105: --EXPECTF--
106: *** Testing each() : basic functionality ***
107: -- Iteration 0 --
108: array(4) {
109: [1]=>
110: int(0)
111: ["value"]=>
112: int(0)
113: [0]=>
114: int(0)
115: ["key"]=>
116: int(0)
117: }
118: bool(false)
119: array(4) {
120: [1]=>
121: int(0)
122: ["value"]=>
123: int(0)
124: [0]=>
125: int(0)
126: ["key"]=>
127: int(0)
128: }
129:
130: -- Iteration 1 --
131: array(4) {
132: [1]=>
133: int(1)
134: ["value"]=>
135: int(1)
136: [0]=>
137: int(0)
138: ["key"]=>
139: int(0)
140: }
141: bool(false)
142: array(4) {
143: [1]=>
144: int(1)
145: ["value"]=>
146: int(1)
147: [0]=>
148: int(0)
149: ["key"]=>
150: int(0)
151: }
152:
153: -- Iteration 2 --
154: array(4) {
155: [1]=>
156: int(-1)
157: ["value"]=>
158: int(-1)
159: [0]=>
160: int(0)
161: ["key"]=>
162: int(0)
163: }
164: bool(false)
165: array(4) {
166: [1]=>
167: int(-1)
168: ["value"]=>
169: int(-1)
170: [0]=>
171: int(0)
172: ["key"]=>
173: int(0)
174: }
175:
176: -- Iteration 3 --
177: array(4) {
178: [1]=>
179: int(1)
180: ["value"]=>
181: int(1)
182: [0]=>
183: int(0)
184: ["key"]=>
185: int(0)
186: }
187: array(4) {
188: [1]=>
189: int(2)
190: ["value"]=>
191: int(2)
192: [0]=>
193: int(1)
194: ["key"]=>
195: int(1)
196: }
197: array(4) {
198: [1]=>
199: int(3)
200: ["value"]=>
201: int(3)
202: [0]=>
203: int(2)
204: ["key"]=>
205: int(2)
206: }
207: array(4) {
208: [1]=>
209: int(4)
210: ["value"]=>
211: int(4)
212: [0]=>
213: int(3)
214: ["key"]=>
215: int(3)
216: }
217: array(4) {
218: [1]=>
219: int(5)
220: ["value"]=>
221: int(5)
222: [0]=>
223: int(4)
224: ["key"]=>
225: int(4)
226: }
227: bool(false)
228: array(4) {
229: [1]=>
230: int(1)
231: ["value"]=>
232: int(1)
233: [0]=>
234: int(0)
235: ["key"]=>
236: int(0)
237: }
238:
239: -- Iteration 4 --
240: array(4) {
241: [1]=>
242: int(-1)
243: ["value"]=>
244: int(-1)
245: [0]=>
246: int(0)
247: ["key"]=>
248: int(0)
249: }
250: array(4) {
251: [1]=>
252: int(-2)
253: ["value"]=>
254: int(-2)
255: [0]=>
256: int(1)
257: ["key"]=>
258: int(1)
259: }
260: array(4) {
261: [1]=>
262: int(-3)
263: ["value"]=>
264: int(-3)
265: [0]=>
266: int(2)
267: ["key"]=>
268: int(2)
269: }
270: array(4) {
271: [1]=>
272: int(6)
273: ["value"]=>
274: int(6)
275: [0]=>
276: int(3)
277: ["key"]=>
278: int(3)
279: }
280: array(4) {
281: [1]=>
282: int(7)
283: ["value"]=>
284: int(7)
285: [0]=>
286: int(4)
287: ["key"]=>
288: int(4)
289: }
290: array(4) {
291: [1]=>
292: int(8)
293: ["value"]=>
294: int(8)
295: [0]=>
296: int(5)
297: ["key"]=>
298: int(5)
299: }
300: bool(false)
301: array(4) {
302: [1]=>
303: int(-1)
304: ["value"]=>
305: int(-1)
306: [0]=>
307: int(0)
308: ["key"]=>
309: int(0)
310: }
311:
312: -- Iteration 5 --
313: array(4) {
314: [1]=>
315: string(1) "a"
316: ["value"]=>
317: string(1) "a"
318: [0]=>
319: int(0)
320: ["key"]=>
321: int(0)
322: }
323: array(4) {
324: [1]=>
325: string(2) "ab"
326: ["value"]=>
327: string(2) "ab"
328: [0]=>
329: int(1)
330: ["key"]=>
331: int(1)
332: }
333: array(4) {
334: [1]=>
335: string(3) "abc"
336: ["value"]=>
337: string(3) "abc"
338: [0]=>
339: int(2)
340: ["key"]=>
341: int(2)
342: }
343: array(4) {
344: [1]=>
345: string(4) "abcd"
346: ["value"]=>
347: string(4) "abcd"
348: [0]=>
349: int(3)
350: ["key"]=>
351: int(3)
352: }
353: bool(false)
354: array(4) {
355: [1]=>
356: string(1) "a"
357: ["value"]=>
358: string(1) "a"
359: [0]=>
360: int(0)
361: ["key"]=>
362: int(0)
363: }
364:
365: -- Iteration 6 --
366: array(4) {
367: [1]=>
368: string(3) "one"
369: ["value"]=>
370: string(3) "one"
371: [0]=>
372: int(1)
373: ["key"]=>
374: int(1)
375: }
376: array(4) {
377: [1]=>
378: string(3) "two"
379: ["value"]=>
380: string(3) "two"
381: [0]=>
382: int(2)
383: ["key"]=>
384: int(2)
385: }
386: array(4) {
387: [1]=>
388: string(5) "three"
389: ["value"]=>
390: string(5) "three"
391: [0]=>
392: int(3)
393: ["key"]=>
394: int(3)
395: }
396: array(4) {
397: [1]=>
398: string(4) "four"
399: ["value"]=>
400: string(4) "four"
401: [0]=>
402: int(4)
403: ["key"]=>
404: int(4)
405: }
406: bool(false)
407: array(4) {
408: [1]=>
409: string(3) "one"
410: ["value"]=>
411: string(3) "one"
412: [0]=>
413: int(1)
414: ["key"]=>
415: int(1)
416: }
417:
418: -- Iteration 7 --
419: array(4) {
420: [1]=>
421: int(1)
422: ["value"]=>
423: int(1)
424: [0]=>
425: string(3) "one"
426: ["key"]=>
427: string(3) "one"
428: }
429: array(4) {
430: [1]=>
431: int(2)
432: ["value"]=>
433: int(2)
434: [0]=>
435: string(3) "two"
436: ["key"]=>
437: string(3) "two"
438: }
439: array(4) {
440: [1]=>
441: string(5) "three"
442: ["value"]=>
443: string(5) "three"
444: [0]=>
445: int(3)
446: ["key"]=>
447: int(3)
448: }
449: array(4) {
450: [1]=>
451: int(4)
452: ["value"]=>
453: int(4)
454: [0]=>
455: int(4)
456: ["key"]=>
457: int(4)
458: }
459: array(4) {
460: [1]=>
461: NULL
462: ["value"]=>
463: NULL
464: [0]=>
465: string(0) ""
466: ["key"]=>
467: string(0) ""
468: }
469: array(4) {
470: [1]=>
471: int(6)
472: ["value"]=>
473: int(6)
474: [0]=>
475: string(2) " "
476: ["key"]=>
477: string(2) " "
478: }
479: array(4) {
480: [1]=>
481: string(1) "