1--TEST--
2Test array_unshift() function : usage variations - different array values for 'array' argument
3--FILE--
4<?php
5/* Prototype  : int array_unshift(array $array, mixed $var [, mixed ...])
6 * Description: Pushes elements onto the beginning of the array
7 * Source code: ext/standard/array.c
8*/
9
10/*
11 * Testing the behavior of array_unshift() by passing different types of arrays
12 * to $array argument to which the $var arguments will be prepended
13*/
14
15echo "*** Testing array_unshift() : different arrays for \$array argument ***\n";
16
17// initialize $var argument
18$var = 10;
19
20// different arrays to be passed to $array argument
21$arrays = array (
22/*1*/  array(1, 2), // array with default keys and numeric values
23       array(1.1, 2.2), // array with default keys & float values
24       array( array(2), array(1)), // sub arrays
25       array(false,true), // array with default keys and boolean values
26       array(), // empty array
27       array(NULL), // array with NULL
28       array("a","aaaa","b","bbbb","c","ccccc"),
29
30       // associative arrays
31/*8*/  array(1 => "one", 2 => "two", 3 => "three"),  // explicit numeric keys, string values
32       array("one" => 1, "two" => 2, "three" => 3 ),  // string keys & numeric values
33       array( 1 => 10, 2 => 20, 4 => 40, 3 => 30),  // explicit numeric keys and numeric values
34       array( "one" => "ten", "two" => "twenty", "three" => "thirty"),  // string key/value
35       array("one" => 1, 2 => "two", 4 => "four"),  //mixed
36
37       // associative array, containing null/empty/boolean values as key/value
38/*13*/ array(NULL => "NULL", null => "null", "NULL" => NULL, "null" => null),
39       array(true => "true", false => "false", "false" => false, "true" => true),
40       array("" => "emptyd", '' => 'emptys', "emptyd" => "", 'emptys' => ''),
41       array(1 => '', 2 => "", 3 => NULL, 4 => null, 5 => false, 6 => true),
42       array('' => 1, "" => 2, NULL => 3, null => 4, false => 5, true => 6),
43
44       // array with repetative keys
45/*18*/ array("One" => 1, "two" => 2, "One" => 10, "two" => 20, "three" => 3)
46);
47
48// loop through the various elements of $arrays to test array_unshift()
49$iterator = 1;
50foreach($arrays as $array) {
51  echo "-- Iteration $iterator --\n";
52
53  /* with default argument */
54  // returns element count in the resulting array after arguments are pushed to
55  // beginning of the given array
56  $temp_array = $array;
57  var_dump( array_unshift($temp_array, $var) );
58
59  // dump the resulting array
60  var_dump($temp_array);
61
62  /* with optional arguments */
63  // returns element count in the resulting array after arguments are pushed to
64  // beginning of the given array
65  $temp_array = $array;
66  var_dump( array_unshift($temp_array, $var, "hello", 'world') );
67
68  // dump the resulting array
69  var_dump($temp_array);
70  $iterator++;
71}
72
73echo "Done";
74?>
75--EXPECT--
76*** Testing array_unshift() : different arrays for $array argument ***
77-- Iteration 1 --
78int(3)
79array(3) {
80  [0]=>
81  int(10)
82  [1]=>
83  int(1)
84  [2]=>
85  int(2)
86}
87int(5)
88array(5) {
89  [0]=>
90  int(10)
91  [1]=>
92  string(5) "hello"
93  [2]=>
94  string(5) "world"
95  [3]=>
96  int(1)
97  [4]=>
98  int(2)
99}
100-- Iteration 2 --
101int(3)
102array(3) {
103  [0]=>
104  int(10)
105  [1]=>
106  float(1.1)
107  [2]=>
108  float(2.2)
109}
110int(5)
111array(5) {
112  [0]=>
113  int(10)
114  [1]=>
115  string(5) "hello"
116  [2]=>
117  string(5) "world"
118  [3]=>
119  float(1.1)
120  [4]=>
121  float(2.2)
122}
123-- Iteration 3 --
124int(3)
125array(3) {
126  [0]=>
127  int(10)
128  [1]=>
129  array(1) {
130    [0]=>
131    int(2)
132  }
133  [2]=>
134  array(1) {
135    [0]=>
136    int(1)
137  }
138}
139int(5)
140array(5) {
141  [0]=>
142  int(10)
143  [1]=>
144  string(5) "hello"
145  [2]=>
146  string(5) "world"
147  [3]=>
148  array(1) {
149    [0]=>
150    int(2)
151  }
152  [4]=>
153  array(1) {
154    [0]=>
155    int(1)
156  }
157}
158-- Iteration 4 --
159int(3)
160array(3) {
161  [0]=>
162  int(10)
163  [1]=>
164  bool(false)
165  [2]=>
166  bool(true)
167}
168int(5)
169array(5) {
170  [0]=>
171  int(10)
172  [1]=>
173  string(5) "hello"
174  [2]=>
175  string(5) "world"
176  [3]=>
177  bool(false)
178  [4]=>
179  bool(true)
180}
181-- Iteration 5 --
182int(1)
183array(1) {
184  [0]=>
185  int(10)
186}
187int(3)
188array(3) {
189  [0]=>
190  int(10)
191  [1]=>
192  string(5) "hello"
193  [2]=>
194  string(5) "world"
195}
196-- Iteration 6 --
197int(2)
198array(2) {
199  [0]=>
200  int(10)
201  [1]=>
202  NULL
203}
204int(4)
205array(4) {
206  [0]=>
207  int(10)
208  [1]=>
209  string(5) "hello"
210  [2]=>
211  string(5) "world"
212  [3]=>
213  NULL
214}
215-- Iteration 7 --
216int(7)
217array(7) {
218  [0]=>
219  int(10)
220  [1]=>
221  string(1) "a"
222  [2]=>
223  string(4) "aaaa"
224  [3]=>
225  string(1) "b"
226  [4]=>
227  string(4) "bbbb"
228  [5]=>
229  string(1) "c"
230  [6]=>
231  string(5) "ccccc"
232}
233int(9)
234array(9) {
235  [0]=>
236  int(10)
237  [1]=>
238  string(5) "hello"
239  [2]=>
240  string(5) "world"
241  [3]=>
242  string(1) "a"
243  [4]=>
244  string(4) "aaaa"
245  [5]=>
246  string(1) "b"
247  [6]=>
248  string(4) "bbbb"
249  [7]=>
250  string(1) "c"
251  [8]=>
252  string(5) "ccccc"
253}
254-- Iteration 8 --
255int(4)
256array(4) {
257  [0]=>
258  int(10)
259  [1]=>
260  string(3) "one"
261  [2]=>
262  string(3) "two"
263  [3]=>
264  string(5) "three"
265}
266int(6)
267array(6) {
268  [0]=>
269  int(10)
270  [1]=>
271  string(5) "hello"
272  [2]=>
273  string(5) "world"
274  [3]=>
275  string(3) "one"
276  [4]=>
277  string(3) "two"
278  [5]=>
279  string(5) "three"
280}
281-- Iteration 9 --
282int(4)
283array(4) {
284  [0]=>
285  int(10)
286  ["one"]=>
287  int(1)
288  ["two"]=>
289  int(2)
290  ["three"]=>
291  int(3)
292}
293int(6)
294array(6) {
295  [0]=>
296  int(10)
297  [1]=>
298  string(5) "hello"
299  [2]=>
300  string(5) "world"
301  ["one"]=>
302  int(1)
303  ["two"]=>
304  int(2)
305  ["three"]=>
306  int(3)
307}
308-- Iteration 10 --
309int(5)
310array(5) {
311  [0]=>
312  int(10)
313  [1]=>
314  int(10)
315  [2]=>
316  int(20)
317  [3]=>
318  int(40)
319  [4]=>
320  int(30)
321}
322int(7)
323array(7) {
324  [0]=>
325  int(10)
326  [1]=>
327  string(5) "hello"
328  [2]=>
329  string(5) "world"
330  [3]=>
331  int(10)
332  [4]=>
333  int(20)
334  [5]=>
335  int(40)
336  [6]=>
337  int(30)
338}
339-- Iteration 11 --
340int(4)
341array(4) {
342  [0]=>
343  int(10)
344  ["one"]=>
345  string(3) "ten"
346  ["two"]=>
347  string(6) "twenty"
348  ["three"]=>
349  string(6) "thirty"
350}
351int(6)
352array(6) {
353  [0]=>
354  int(10)
355  [1]=>
356  string(5) "hello"
357  [2]=>
358  string(5) "world"
359  ["one"]=>
360  string(3) "ten"
361  ["two"]=>
362  string(6) "twenty"
363  ["three"]=>
364  string(6) "thirty"
365}
366-- Iteration 12 --
367int(4)
368array(4) {
369  [0]=>
370  int(10)
371  ["one"]=>
372  int(1)
373  [1]=>
374  string(3) "two"
375  [2]=>
376  string(4) "four"
377}
378int(6)
379array(6) {
380  [0]=>
381  int(10)
382  [1]=>
383  string(5) "hello"
384  [2]=>
385  string(5) "world"
386  ["one"]=>
387  int(1)
388  [3]=>
389  string(3) "two"
390  [4]=>
391  string(4) "four"
392}
393-- Iteration 13 --
394int(4)
395array(4) {
396  [0]=>
397  int(10)
398  [""]=>
399  string(4) "null"
400  ["NULL"]=>
401  NULL
402  ["null"]=>
403  NULL
404}
405int(6)
406array(6) {
407  [0]=>
408  int(10)
409  [1]=>
410  string(5) "hello"
411  [2]=>
412  string(5) "world"
413  [""]=>
414  string(4) "null"
415  ["NULL"]=>
416  NULL
417  ["null"]=>
418  NULL
419}
420-- Iteration 14 --
421int(5)
422array(5) {
423  [0]=>
424  int(10)
425  [1]=>
426  string(4) "true"
427  [2]=>
428  string(5) "false"
429  ["false"]=>
430  bool(false)
431  ["true"]=>
432  bool(true)
433}
434int(7)
435array(7) {
436  [0]=>
437  int(10)
438  [1]=>
439  string(5) "hello"
440  [2]=>
441  string(5) "world"
442  [3]=>
443  string(4) "true"
444  [4]=>
445  string(5) "false"
446  ["false"]=>
447  bool(false)
448  ["true"]=>
449  bool(true)
450}
451-- Iteration 15 --
452int(4)
453array(4) {
454  [0]=>
455  int(10)
456  [""]=>
457  string(6) "emptys"
458  ["emptyd"]=>
459  string(0) ""
460  ["emptys"]=>
461  string(0) ""
462}
463int(6)
464array(6) {
465  [0]=>
466  int(10)
467  [1]=>
468  string(5) "hello"
469  [2]=>
470  string(5) "world"
471  [""]=>
472  string(6) "emptys"
473  ["emptyd"]=>
474  string(0) ""
475  ["emptys"]=>
476  string(0) ""
477}
478-- Iteration 16 --
479int(7)
480array(7) {
481  [0]=>
482  int(10)
483  [1]=>
484  string(0) ""
485  [2]=>
486  string(0) ""
487  [3]=>
488  NULL
489  [4]=>
490  NULL
491  [5]=>
492  bool(false)
493  [6]=>
494  bool(true)
495}
496int(9)
497array(9) {
498  [0]=>
499  int(10)
500  [1]=>
501  string(5) "hello"
502  [2]=>
503  string(5) "world"
504  [3]=>
505  string(0) ""
506  [4]=>
507  string(0) ""
508  [5]=>
509  NULL
510  [6]=>
511  NULL
512  [7]=>
513  bool(false)
514  [8]=>
515  bool(true)
516}
517-- Iteration 17 --
518int(4)
519array(4) {
520  [0]=>
521  int(10)
522  [""]=>
523  int(4)
524  [1]=>
525  int(5)
526  [2]=>
527  int(6)
528}
529int(6)
530array(6) {
531  [0]=>
532  int(10)
533  [1]=>
534  string(5) "hello"
535  [2]=>
536  string(5) "world"
537  [""]=>
538  int(4)
539  [3]=>
540  int(5)
541  [4]=>
542  int(6)
543}
544-- Iteration 18 --
545int(4)
546array(4) {
547  [0]=>
548  int(10)
549  ["One"]=>
550  int(10)
551  ["two"]=>
552  int(20)
553  ["three"]=>
554  int(3)
555}
556int(6)
557array(6) {
558  [0]=>
559  int(10)
560  [1]=>
561  string(5) "hello"
562  [2]=>
563  string(5) "world"
564  ["One"]=>
565  int(10)
566  ["two"]=>
567  int(20)
568  ["three"]=>
569  int(3)
570}
571Done
572