Annotation of embedaddon/php/ext/standard/tests/array/005.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Test array_shift() function
3: --FILE--
4: <?php
5: /* Prototype: mixed array_shift( array &array );
6: * Description: Shifts the first value of the array off and returns it.
7: */
8:
9: array_shift($GLOBALS);
10:
11: $empty_array = array();
12: $number = 5;
13: $str = "abc";
14:
15:
16: /* Various combinations of arrays to be used for the test */
17: $mixed_array = array(
18: array(),
19: array( 1,2,3,4,5,6,7,8,9 ),
20: array( "One", "_Two", "Three", "Four", "Five" ),
21: array( 6, "six", 7, "seven", 8, "eight", 9, "nine" ),
22: array( "a" => "aaa", "A" => "AAA", "c" => "ccc", "d" => "ddd", "e" => "eee" ),
23: array( "1" => "one", "2" => "two", "3" => "three", "4" => "four", "5" => "five" ),
24: array( 1 => "one", 2 => "two", 3 => 7, 4 => "four", 5 => "five" ),
25: array( "f" => "fff", "1" => "one", 4 => 6, "" => "blank", 2.4 => "float", "F" => "FFF",
26: "blank" => "", 3.7 => 3.7, 5.4 => 7, 6 => 8.6, '5' => "Five", "4name" => "jonny", "a" => NULL, NULL => 3 ),
27: array( 12, "name", 'age', '45' ),
28: array( array("oNe", "tWo", 4), array(10, 20, 30, 40, 50), array() ),
29: array( "one" => 1, "one" => 2, "three" => 3, 3, 4, 3 => 33, 4 => 44, 5, 6,
30: 5.4 => 54, 5.7 => 57, "5.4" => 554, "5.7" => 557 )
31: );
32:
33: /* Testing Error Conditions */
34: echo "\n*** Testing Error Conditions ***\n";
35:
36: /* Zero argument */
37: var_dump( array_shift() );
38:
39: /* Scalar argument */
40: var_dump( array_shift($number) );
41:
42: /* String argument */
43: var_dump( array_shift($str) );
44:
45: /* Invalid Number of arguments */
46: var_dump( array_shift($mixed_array[1],$mixed_array[2]) );
47:
48: /* Empty Array as argument */
49: var_dump( array_shift($empty_array) );
50:
51: /* Loop to test normal functionality with different arrays inputs */
52: echo "\n*** Testing with various array inputs ***\n";
53:
54: $counter = 1;
55: foreach( $mixed_array as $sub_array ) {
56: echo "\n-- Input Array for Iteration $counter is -- \n";
57: print_r( $sub_array );
58: echo "\nOutput after shift is :\n";
59: var_dump( array_shift($sub_array) );
60: $counter++;
61: }
62:
63: /*Checking for internal array pointer beint reset when shift is called */
64:
65: echo"\n*** Checking for internal array pointer being reset when shift is called ***\n";
66:
67: echo "\nCurrent Element is : ";
68: var_dump( current($mixed_array[1]) );
69:
70: echo "\nNext Element is : ";
71: var_dump( next($mixed_array[1]) );
72:
73: echo "\nNext Element is : ";
74: var_dump( next($mixed_array[1]) );
75:
76: echo "\nshifted Element is : ";
77: var_dump( array_shift($mixed_array[1]) );
78:
79: echo "\nCurrent Element after shift operation is: ";
80: var_dump( current($mixed_array[1]) );
81:
82: echo"Done";
83: ?>
84: --EXPECTF--
85: *** Testing Error Conditions ***
86:
87: Warning: array_shift() expects exactly 1 parameter, 0 given in %s on line %d
88: NULL
89:
90: Warning: array_shift() expects parameter 1 to be array, integer given in %s on line %d
91: NULL
92:
93: Warning: array_shift() expects parameter 1 to be array, string given in %s on line %d
94: NULL
95:
96: Warning: array_shift() expects exactly 1 parameter, 2 given in %s on line %d
97: NULL
98: NULL
99:
100: *** Testing with various array inputs ***
101:
102: -- Input Array for Iteration 1 is --
103: Array
104: (
105: )
106:
107: Output after shift is :
108: NULL
109:
110: -- Input Array for Iteration 2 is --
111: Array
112: (
113: [0] => 1
114: [1] => 2
115: [2] => 3
116: [3] => 4
117: [4] => 5
118: [5] => 6
119: [6] => 7
120: [7] => 8
121: [8] => 9
122: )
123:
124: Output after shift is :
125: int(1)
126:
127: -- Input Array for Iteration 3 is --
128: Array
129: (
130: [0] => One
131: [1] => _Two
132: [2] => Three
133: [3] => Four
134: [4] => Five
135: )
136:
137: Output after shift is :
138: string(3) "One"
139:
140: -- Input Array for Iteration 4 is --
141: Array
142: (
143: [0] => 6
144: [1] => six
145: [2] => 7
146: [3] => seven
147: [4] => 8
148: [5] => eight
149: [6] => 9
150: [7] => nine
151: )
152:
153: Output after shift is :
154: int(6)
155:
156: -- Input Array for Iteration 5 is --
157: Array
158: (
159: [a] => aaa
160: [A] => AAA
161: [c] => ccc
162: [d] => ddd
163: [e] => eee
164: )
165:
166: Output after shift is :
167: string(3) "aaa"
168:
169: -- Input Array for Iteration 6 is --
170: Array
171: (
172: [1] => one
173: [2] => two
174: [3] => three
175: [4] => four
176: [5] => five
177: )
178:
179: Output after shift is :
180: string(3) "one"
181:
182: -- Input Array for Iteration 7 is --
183: Array
184: (
185: [1] => one
186: [2] => two
187: [3] => 7
188: [4] => four
189: [5] => five
190: )
191:
192: Output after shift is :
193: string(3) "one"
194:
195: -- Input Array for Iteration 8 is --
196: Array
197: (
198: [f] => fff
199: [1] => one
200: [4] => 6
201: [] => 3
202: [2] => float
203: [F] => FFF
204: [blank] =>
205: [3] => 3.7
206: [5] => Five
207: [6] => 8.6
208: [4name] => jonny
209: [a] =>
210: )
211:
212: Output after shift is :
213: string(3) "fff"
214:
215: -- Input Array for Iteration 9 is --
216: Array
217: (
218: [0] => 12
219: [1] => name
220: [2] => age
221: [3] => 45
222: )
223:
224: Output after shift is :
225: int(12)
226:
227: -- Input Array for Iteration 10 is --
228: Array
229: (
230: [0] => Array
231: (
232: [0] => oNe
233: [1] => tWo
234: [2] => 4
235: )
236:
237: [1] => Array
238: (
239: [0] => 10
240: [1] => 20
241: [2] => 30
242: [3] => 40
243: [4] => 50
244: )
245:
246: [2] => Array
247: (
248: )
249:
250: )
251:
252: Output after shift is :
253: array(3) {
254: [0]=>
255: string(3) "oNe"
256: [1]=>
257: string(3) "tWo"
258: [2]=>
259: int(4)
260: }
261:
262: -- Input Array for Iteration 11 is --
263: Array
264: (
265: [one] => 2
266: [three] => 3
267: [0] => 3
268: [1] => 4
269: [3] => 33
270: [4] => 44
271: [5] => 57
272: [6] => 6
273: [5.4] => 554
274: [5.7] => 557
275: )
276:
277: Output after shift is :
278: int(2)
279:
280: *** Checking for internal array pointer being reset when shift is called ***
281:
282: Current Element is : int(1)
283:
284: Next Element is : int(2)
285:
286: Next Element is : int(3)
287:
288: shifted Element is : int(1)
289:
290: Current Element after shift operation is: int(2)
291: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>