Annotation of embedaddon/php/ext/standard/tests/array/each_variation4.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test each() function : usage variations - Referenced variables
3: --INI--
4: allow_call_time_pass_reference=on
5: --FILE--
6: <?php
7: /* Prototype : array each(array $arr)
8: * Description: Return the currently pointed key..value pair in the passed array,
9: * and advance the pointer to the next element
10: * Source code: Zend/zend_builtin_functions.c
11: */
12:
13: /*
14: * Test behaviour of each() when:
15: * 1. Passed an array made up of referenced variables
16: * 2. Passed an array as $arr argument by reference
17: */
18:
19: echo "*** Testing each() : usage variations ***\n";
20:
21: echo "\n-- Array made up of referenced variables: --\n";
22: $val1 = 'foo';
23: $val2 = 'bar';
24:
25: $arr1 = array('one' => &$val1, &$val2);
26:
27: echo "-- Call each until at the end of the array: --\n";
28: var_dump( each($arr1) );
29: var_dump( each($arr1) );
30: var_dump( each($arr1) );
31:
32:
33: echo "\n-- Pass an array by reference to each(): --\n";
34: $arr2 = array('zero', 'one', 'two');
35:
36: var_dump( each(&$arr2) );
37: echo "-- Check original array: --\n";
38: var_dump($arr2);
39:
40: echo "Done";
41: ?>
42:
43: --EXPECTF--
44: *** Testing each() : usage variations ***
45:
46: -- Array made up of referenced variables: --
47: -- Call each until at the end of the array: --
48: array(4) {
49: [1]=>
50: string(3) "foo"
51: ["value"]=>
52: string(3) "foo"
53: [0]=>
54: string(3) "one"
55: ["key"]=>
56: string(3) "one"
57: }
58: array(4) {
59: [1]=>
60: string(3) "bar"
61: ["value"]=>
62: string(3) "bar"
63: [0]=>
64: int(0)
65: ["key"]=>
66: int(0)
67: }
68: bool(false)
69:
70: -- Pass an array by reference to each(): --
71: array(4) {
72: [1]=>
73: string(4) "zero"
74: ["value"]=>
75: string(4) "zero"
76: [0]=>
77: int(0)
78: ["key"]=>
79: int(0)
80: }
81: -- Check original array: --
82: array(3) {
83: [0]=>
84: string(4) "zero"
85: [1]=>
86: string(3) "one"
87: [2]=>
88: string(3) "two"
89: }
90: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>