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