]> granicus.if.org Git - php/blob
ed9f0458c4
[php] /
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 /* Empty Array as argument */
37 var_dump( array_shift($empty_array) );
38
39 /* Loop to test normal functionality with different arrays inputs */
40 echo "\n*** Testing with various array inputs ***\n";
41
42 $counter = 1;
43 foreach( $mixed_array as $sub_array ) {
44   echo "\n-- Input Array for Iteration $counter is -- \n";
45   print_r( $sub_array );
46   echo "\nOutput after shift is :\n";
47   var_dump( array_shift($sub_array) );
48   $counter++;
49 }
50
51 /*Checking for internal array pointer beint reset when shift is called */
52
53 echo"\n*** Checking for internal array pointer being reset when shift is called ***\n";
54
55 echo "\nCurrent Element is : ";
56 var_dump( current($mixed_array[1]) );
57
58 echo "\nNext Element is : ";
59 var_dump( next($mixed_array[1]) );
60
61 echo "\nNext Element is : ";
62 var_dump( next($mixed_array[1]) );
63
64 echo "\nshifted Element is : ";
65 var_dump( array_shift($mixed_array[1]) );
66
67 echo "\nCurrent Element after shift operation is: ";
68 var_dump( current($mixed_array[1]) );
69
70 echo"Done";
71 ?>
72 --EXPECT--
73 *** Testing Error Conditions ***
74 NULL
75
76 *** Testing with various array inputs ***
77
78 -- Input Array for Iteration 1 is -- 
79 Array
80 (
81 )
82
83 Output after shift is :
84 NULL
85
86 -- Input Array for Iteration 2 is -- 
87 Array
88 (
89     [0] => 1
90     [1] => 2
91     [2] => 3
92     [3] => 4
93     [4] => 5
94     [5] => 6
95     [6] => 7
96     [7] => 8
97     [8] => 9
98 )
99
100 Output after shift is :
101 int(1)
102
103 -- Input Array for Iteration 3 is -- 
104 Array
105 (
106     [0] => One
107     [1] => _Two
108     [2] => Three
109     [3] => Four
110     [4] => Five
111 )
112
113 Output after shift is :
114 string(3) "One"
115
116 -- Input Array for Iteration 4 is -- 
117 Array
118 (
119     [0] => 6
120     [1] => six
121     [2] => 7
122     [3] => seven
123     [4] => 8
124     [5] => eight
125     [6] => 9
126     [7] => nine
127 )
128
129 Output after shift is :
130 int(6)
131
132 -- Input Array for Iteration 5 is -- 
133 Array
134 (
135     [a] => aaa
136     [A] => AAA
137     [c] => ccc
138     [d] => ddd
139     [e] => eee
140 )
141
142 Output after shift is :
143 string(3) "aaa"
144
145 -- Input Array for Iteration 6 is -- 
146 Array
147 (
148     [1] => one
149     [2] => two
150     [3] => three
151     [4] => four
152     [5] => five
153 )
154
155 Output after shift is :
156 string(3) "one"
157
158 -- Input Array for Iteration 7 is -- 
159 Array
160 (
161     [1] => one
162     [2] => two
163     [3] => 7
164     [4] => four
165     [5] => five
166 )
167
168 Output after shift is :
169 string(3) "one"
170
171 -- Input Array for Iteration 8 is -- 
172 Array
173 (
174     [f] => fff
175     [1] => one
176     [4] => 6
177     [] => 3
178     [2] => float
179     [F] => FFF
180     [blank] => 
181     [3] => 3.7
182     [5] => Five
183     [6] => 8.6
184     [4name] => jonny
185     [a] => 
186 )
187
188 Output after shift is :
189 string(3) "fff"
190
191 -- Input Array for Iteration 9 is -- 
192 Array
193 (
194     [0] => 12
195     [1] => name
196     [2] => age
197     [3] => 45
198 )
199
200 Output after shift is :
201 int(12)
202
203 -- Input Array for Iteration 10 is -- 
204 Array
205 (
206     [0] => Array
207         (
208             [0] => oNe
209             [1] => tWo
210             [2] => 4
211         )
212
213     [1] => Array
214         (
215             [0] => 10
216             [1] => 20
217             [2] => 30
218             [3] => 40
219             [4] => 50
220         )
221
222     [2] => Array
223         (
224         )
225
226 )
227
228 Output after shift is :
229 array(3) {
230   [0]=>
231   string(3) "oNe"
232   [1]=>
233   string(3) "tWo"
234   [2]=>
235   int(4)
236 }
237
238 -- Input Array for Iteration 11 is -- 
239 Array
240 (
241     [one] => 2
242     [three] => 3
243     [0] => 3
244     [1] => 4
245     [3] => 33
246     [4] => 44
247     [5] => 57
248     [6] => 6
249     [5.4] => 554
250     [5.7] => 557
251 )
252
253 Output after shift is :
254 int(2)
255
256 *** Checking for internal array pointer being reset when shift is called ***
257
258 Current Element is : int(1)
259
260 Next Element is : int(2)
261
262 Next Element is : int(3)
263
264 shifted Element is : int(1)
265
266 Current Element after shift operation is: int(2)
267 Done