]> granicus.if.org Git - php/blob
c62be0d27c
[php] /
1 --TEST--
2 Test key(), current(), next() & reset() functions
3 --FILE--
4 <?php
5 /* Prototype & Usage:
6    mixed key ( array &$array ) -> returns the index element of the current array position
7    mixed current ( array &$array ) -> returns the current element in the array
8    mixed next ( array &$array ) -> similar to current() but advances the internal pointer to next element
9    mixed reset ( array &$array ) -> Reset the internal pointer to first element
10 */
11
12 $basic_arrays = array (
13   array(0),  // array with element as 0
14   array(1),  // array with single element
15   array(1,2, 3, -1, -2, -3),               // array of integers
16   array(1.1, 2.2, 3.3, -1.1, -2.2, -3.3),  // array of floats
17   array('a', 'b', 'c', "ab", "ac", "ad"),  // string array
18   array("a" => "apple", "b" => "book", "c" => "cook"),  // associative array
19   array('d' => 'drink', 'p' => 'port', 's' => 'set'),   // another associative array
20   array(1 => 'One', 2 => 'two', 3 => "three")           // associative array with key as integers
21 );
22
23 $varient_arrays = array (
24    array(),    // empty array
25    array(""),  // array with null string
26    array(NULL),// array with NULL
27    array(null),// array with null
28    array(NULL, true, null, "", 1), // mixed array
29    array(-1.5 => "test", -2 => "rest", 2.5 => "two",
30          "" => "string", 0 => "zero", "" => "" ) // mixed array
31 );
32
33 echo "*** Testing basic operations ***\n";
34 $loop_count = 1;
35 foreach ($basic_arrays as $sub_array )  {
36   echo "-- Iteration $loop_count --\n";
37   $loop_count++;
38   $c = count ($sub_array);
39   $c++; // increment by one to create the situation of accessing beyond array size
40   while ( $c ) {
41     var_dump( current($sub_array)); // current element
42     var_dump( key($sub_array) );    // key of the current element
43     var_dump( next($sub_array) );   // move to next element
44     $c --;
45   }
46   var_dump( reset($sub_array) );    // reset the internal pointer to first element
47   var_dump( key($sub_array) );      // access the array after reset
48   var_dump( $sub_array );           // dump the array to see that its intact
49
50   echo "\n";
51 }
52
53 echo "\n*** Testing possible variations ***\n";
54 $loop_count = 1;
55 foreach ($varient_arrays as $sub_array )  {
56   echo "-- Iteration $loop_count --\n";
57   $loop_count++;
58   $c = count ($sub_array);
59   $c++; // increment by one to create the situation of accessing beyond array size
60   while ( $c ) {
61     var_dump( current($sub_array)); // current element
62     var_dump( key($sub_array) );    // key of the current element
63     var_dump( next($sub_array) );   // move to next element
64     $c --;
65   }
66   var_dump( reset($sub_array) );    // reset the internal pointer to first element
67   var_dump( key($sub_array) );      // access the array after reset
68   var_dump( $sub_array );           // dump the array to see that its intact
69   echo "\n";
70 }
71
72 echo "Done\n";
73 ?>
74 --EXPECTF--
75 *** Testing basic operations ***
76 -- Iteration 1 --
77 int(0)
78 int(0)
79 bool(false)
80 bool(false)
81 NULL
82 bool(false)
83 int(0)
84 int(0)
85 array(1) {
86   [0]=>
87   int(0)
88 }
89
90 -- Iteration 2 --
91 int(1)
92 int(0)
93 bool(false)
94 bool(false)
95 NULL
96 bool(false)
97 int(1)
98 int(0)
99 array(1) {
100   [0]=>
101   int(1)
102 }
103
104 -- Iteration 3 --
105 int(1)
106 int(0)
107 int(2)
108 int(2)
109 int(1)
110 int(3)
111 int(3)
112 int(2)
113 int(-1)
114 int(-1)
115 int(3)
116 int(-2)
117 int(-2)
118 int(4)
119 int(-3)
120 int(-3)
121 int(5)
122 bool(false)
123 bool(false)
124 NULL
125 bool(false)
126 int(1)
127 int(0)
128 array(6) {
129   [0]=>
130   int(1)
131   [1]=>
132   int(2)
133   [2]=>
134   int(3)
135   [3]=>
136   int(-1)
137   [4]=>
138   int(-2)
139   [5]=>
140   int(-3)
141 }
142
143 -- Iteration 4 --
144 float(1.1)
145 int(0)
146 float(2.2)
147 float(2.2)
148 int(1)
149 float(3.3)
150 float(3.3)
151 int(2)
152 float(-1.1)
153 float(-1.1)
154 int(3)
155 float(-2.2)
156 float(-2.2)
157 int(4)
158 float(-3.3)
159 float(-3.3)
160 int(5)
161 bool(false)
162 bool(false)
163 NULL
164 bool(false)
165 float(1.1)
166 int(0)
167 array(6) {
168   [0]=>
169   float(1.1)
170   [1]=>
171   float(2.2)
172   [2]=>
173   float(3.3)
174   [3]=>
175   float(-1.1)
176   [4]=>
177   float(-2.2)
178   [5]=>
179   float(-3.3)
180 }
181
182 -- Iteration 5 --
183 string(1) "a"
184 int(0)
185 string(1) "b"
186 string(1) "b"
187 int(1)
188 string(1) "c"
189 string(1) "c"
190 int(2)
191 string(2) "ab"
192 string(2) "ab"
193 int(3)
194 string(2) "ac"
195 string(2) "ac"
196 int(4)
197 string(2) "ad"
198 string(2) "ad"
199 int(5)
200 bool(false)
201 bool(false)
202 NULL
203 bool(false)
204 string(1) "a"
205 int(0)
206 array(6) {
207   [0]=>
208   string(1) "a"
209   [1]=>
210   string(1) "b"
211   [2]=>
212   string(1) "c"
213   [3]=>
214   string(2) "ab"
215   [4]=>
216   string(2) "ac"
217   [5]=>
218   string(2) "ad"
219 }
220
221 -- Iteration 6 --
222 string(5) "apple"
223 string(1) "a"
224 string(4) "book"
225 string(4) "book"
226 string(1) "b"
227 string(4) "cook"
228 string(4) "cook"
229 string(1) "c"
230 bool(false)
231 bool(false)
232 NULL
233 bool(false)
234 string(5) "apple"
235 string(1) "a"
236 array(3) {
237   ["a"]=>
238   string(5) "apple"
239   ["b"]=>
240   string(4) "book"
241   ["c"]=>
242   string(4) "cook"
243 }
244
245 -- Iteration 7 --
246 string(5) "drink"
247 string(1) "d"
248 string(4) "port"
249 string(4) "port"
250 string(1) "p"
251 string(3) "set"
252 string(3) "set"
253 string(1) "s"
254 bool(false)
255 bool(false)
256 NULL
257 bool(false)
258 string(5) "drink"
259 string(1) "d"
260 array(3) {
261   ["d"]=>
262   string(5) "drink"
263   ["p"]=>
264   string(4) "port"
265   ["s"]=>
266   string(3) "set"
267 }
268
269 -- Iteration 8 --
270 string(3) "One"
271 int(1)
272 string(3) "two"
273 string(3) "two"
274 int(2)
275 string(5) "three"
276 string(5) "three"
277 int(3)
278 bool(false)
279 bool(false)
280 NULL
281 bool(false)
282 string(3) "One"
283 int(1)
284 array(3) {
285   [1]=>
286   string(3) "One"
287   [2]=>
288   string(3) "two"
289   [3]=>
290   string(5) "three"
291 }
292
293
294 *** Testing possible variations ***
295 -- Iteration 1 --
296 bool(false)
297 NULL
298 bool(false)
299 bool(false)
300 NULL
301 array(0) {
302 }
303
304 -- Iteration 2 --
305 string(0) ""
306 int(0)
307 bool(false)
308 bool(false)
309 NULL
310 bool(false)
311 string(0) ""
312 int(0)
313 array(1) {
314   [0]=>
315   string(0) ""
316 }
317
318 -- Iteration 3 --
319 NULL
320 int(0)
321 bool(false)
322 bool(false)
323 NULL
324 bool(false)
325 NULL
326 int(0)
327 array(1) {
328   [0]=>
329   NULL
330 }
331
332 -- Iteration 4 --
333 NULL
334 int(0)
335 bool(false)
336 bool(false)
337 NULL
338 bool(false)
339 NULL
340 int(0)
341 array(1) {
342   [0]=>
343   NULL
344 }
345
346 -- Iteration 5 --
347 NULL
348 int(0)
349 bool(true)
350 bool(true)
351 int(1)
352 NULL
353 NULL
354 int(2)
355 string(0) ""
356 string(0) ""
357 int(3)
358 int(1)
359 int(1)
360 int(4)
361 bool(false)
362 bool(false)
363 NULL
364 bool(false)
365 NULL
366 int(0)
367 array(5) {
368   [0]=>
369   NULL
370   [1]=>
371   bool(true)
372   [2]=>
373   NULL
374   [3]=>
375   string(0) ""
376   [4]=>
377   int(1)
378 }
379
380 -- Iteration 6 --
381 string(4) "test"
382 int(-1)
383 string(4) "rest"
384 string(4) "rest"
385 int(-2)
386 string(3) "two"
387 string(3) "two"
388 int(2)
389 string(0) ""
390 string(0) ""
391 string(0) ""
392 string(4) "zero"
393 string(4) "zero"
394 int(0)
395 bool(false)
396 bool(false)
397 NULL
398 bool(false)
399 string(4) "test"
400 int(-1)
401 array(5) {
402   [-1]=>
403   string(4) "test"
404   [-2]=>
405   string(4) "rest"
406   [2]=>
407   string(3) "two"
408   [""]=>
409   string(0) ""
410   [0]=>
411   string(4) "zero"
412 }
413
414 Done