]> granicus.if.org Git - php/blob
08ecbf7147
[php] /
1 --TEST--
2 Test array_merge() function
3 --INI--
4 precision=14
5 --FILE--
6 <?php
7 /* Prototype: array array_merge(array $array1 [, array $array2 [, array $...]]);
8    Description: Merge one or more arrays
9 */
10
11 echo "\n*** Testing array_merge() basic functionality ***";
12 $begin_array = array(
13   array(),
14   array( 1 => "string"),
15   array( "" => "string"),
16   array( -2.44444 => 12),
17   array( "a" => 1, "b" => -2.344, "b" => "string", "c" => NULL, "d" => -2.344),
18   array( 4 => 1, 3 => -2.344, "3" => "string", "2" => NULL,1 => -2.344),
19   array( NULL, 1.23 => "Hi", "string" => "hello",
20   array("" => "World", "-2.34" => "a", "0" => "b"))
21 );
22
23 $end_array   = array(
24   array(),
25   array( 1 => "string"),
26   array( "" => "string"),
27   array( -2.44444 => 12),
28   array( "a" => 1, "b" => -2.344, "b" => "string", "c" => NULL, "d" => -2.344),
29   array( 4 => 1, 3 => -2.344, "3" => "string", "2" => NULL, 1=> -2.344),
30   array( NULL, 1.23 => "Hi", "string" => "hello",
31          array("" => "World", "-2.34" => "a", "0" => "b"))
32 );
33
34 /* loop through to merge two arrays */
35 $count_outer = 0;
36 foreach($begin_array as $first) {
37   echo "\n\n--- Iteration $count_outer ---";
38   $count_inner = 0;
39   foreach($end_array as $second) {
40     echo "\n-- Inner iteration $count_inner of Iteration $count_outer --\n";
41     $result = array_merge($first, $second);
42     print_r($result);
43     $count_inner++;
44   }
45   $count_outer++;
46 }
47
48
49 echo "\n*** Testing array_merge() with three or more arrays ***\n";
50 var_dump( array_merge( $end_array[0],
51                        $end_array[5],
52                        $end_array[4],
53                        $end_array[6]
54                      )
55         );
56
57 var_dump( array_merge( $end_array[0],
58                        $end_array[5],
59                        array("array on fly"),
60                        array("nullarray" => array())
61                      )
62         );
63
64
65 echo "\n*** Testing single array argument ***\n";
66 /* Empty array */
67 var_dump(array_merge(array()));
68
69 /* associative array with string keys, which will not be re-indexed */
70 var_dump(array_merge($begin_array[4]));
71
72 /* associative array with numeric keys, which will be re-indexed */
73 var_dump(array_merge($begin_array[5]));
74
75 /* associative array with mixed keys and sub-array as element */
76 var_dump(array_merge($begin_array[6]));
77
78 echo "\n*** Testing array_merge() with typecasting non-array to array ***\n";
79 var_dump(array_merge($begin_array[4], (array)"type1", (array)10, (array)12.34));
80
81 echo "\n*** Testing array_merge without any arguments ***\n";
82 var_dump(array_merge());
83
84 echo "Done\n";
85 ?>
86 --EXPECTF--
87 *** Testing array_merge() basic functionality ***
88
89 --- Iteration 0 ---
90 -- Inner iteration 0 of Iteration 0 --
91 Array
92 (
93 )
94
95 -- Inner iteration 1 of Iteration 0 --
96 Array
97 (
98     [0] => string
99 )
100
101 -- Inner iteration 2 of Iteration 0 --
102 Array
103 (
104     [] => string
105 )
106
107 -- Inner iteration 3 of Iteration 0 --
108 Array
109 (
110     [0] => 12
111 )
112
113 -- Inner iteration 4 of Iteration 0 --
114 Array
115 (
116     [a] => 1
117     [b] => string
118     [c] => 
119     [d] => -2.344
120 )
121
122 -- Inner iteration 5 of Iteration 0 --
123 Array
124 (
125     [0] => 1
126     [1] => string
127     [2] => 
128     [3] => -2.344
129 )
130
131 -- Inner iteration 6 of Iteration 0 --
132 Array
133 (
134     [0] => 
135     [1] => Hi
136     [string] => hello
137     [2] => Array
138         (
139             [] => World
140             [-2.34] => a
141             [0] => b
142         )
143
144 )
145
146
147 --- Iteration 1 ---
148 -- Inner iteration 0 of Iteration 1 --
149 Array
150 (
151     [0] => string
152 )
153
154 -- Inner iteration 1 of Iteration 1 --
155 Array
156 (
157     [0] => string
158     [1] => string
159 )
160
161 -- Inner iteration 2 of Iteration 1 --
162 Array
163 (
164     [0] => string
165     [] => string
166 )
167
168 -- Inner iteration 3 of Iteration 1 --
169 Array
170 (
171     [0] => string
172     [1] => 12
173 )
174
175 -- Inner iteration 4 of Iteration 1 --
176 Array
177 (
178     [0] => string
179     [a] => 1
180     [b] => string
181     [c] => 
182     [d] => -2.344
183 )
184
185 -- Inner iteration 5 of Iteration 1 --
186 Array
187 (
188     [0] => string
189     [1] => 1
190     [2] => string
191     [3] => 
192     [4] => -2.344
193 )
194
195 -- Inner iteration 6 of Iteration 1 --
196 Array
197 (
198     [0] => string
199     [1] => 
200     [2] => Hi
201     [string] => hello
202     [3] => Array
203         (
204             [] => World
205             [-2.34] => a
206             [0] => b
207         )
208
209 )
210
211
212 --- Iteration 2 ---
213 -- Inner iteration 0 of Iteration 2 --
214 Array
215 (
216     [] => string
217 )
218
219 -- Inner iteration 1 of Iteration 2 --
220 Array
221 (
222     [] => string
223     [0] => string
224 )
225
226 -- Inner iteration 2 of Iteration 2 --
227 Array
228 (
229     [] => string
230 )
231
232 -- Inner iteration 3 of Iteration 2 --
233 Array
234 (
235     [] => string
236     [0] => 12
237 )
238
239 -- Inner iteration 4 of Iteration 2 --
240 Array
241 (
242     [] => string
243     [a] => 1
244     [b] => string
245     [c] => 
246     [d] => -2.344
247 )
248
249 -- Inner iteration 5 of Iteration 2 --
250 Array
251 (
252     [] => string
253     [0] => 1
254     [1] => string
255     [2] => 
256     [3] => -2.344
257 )
258
259 -- Inner iteration 6 of Iteration 2 --
260 Array
261 (
262     [] => string
263     [0] => 
264     [1] => Hi
265     [string] => hello
266     [2] => Array
267         (
268             [] => World
269             [-2.34] => a
270             [0] => b
271         )
272
273 )
274
275
276 --- Iteration 3 ---
277 -- Inner iteration 0 of Iteration 3 --
278 Array
279 (
280     [0] => 12
281 )
282
283 -- Inner iteration 1 of Iteration 3 --
284 Array
285 (
286     [0] => 12
287     [1] => string
288 )
289
290 -- Inner iteration 2 of Iteration 3 --
291 Array
292 (
293     [0] => 12
294     [] => string
295 )
296
297 -- Inner iteration 3 of Iteration 3 --
298 Array
299 (
300     [0] => 12
301     [1] => 12
302 )
303
304 -- Inner iteration 4 of Iteration 3 --
305 Array
306 (
307     [0] => 12
308     [a] => 1
309     [b] => string
310     [c] => 
311     [d] => -2.344
312 )
313
314 -- Inner iteration 5 of Iteration 3 --
315 Array
316 (
317     [0] => 12
318     [1] => 1
319     [2] => string
320     [3] => 
321     [4] => -2.344
322 )
323
324 -- Inner iteration 6 of Iteration 3 --
325 Array
326 (
327     [0] => 12
328     [1] => 
329     [2] => Hi
330     [string] => hello
331     [3] => Array
332         (
333             [] => World
334             [-2.34] => a
335             [0] => b
336         )
337
338 )
339
340
341 --- Iteration 4 ---
342 -- Inner iteration 0 of Iteration 4 --
343 Array
344 (
345     [a] => 1
346     [b] => string
347     [c] => 
348     [d] => -2.344
349 )
350
351 -- Inner iteration 1 of Iteration 4 --
352 Array
353 (
354     [a] => 1
355     [b] => string
356     [c] => 
357     [d] => -2.344
358     [0] => string
359 )
360
361 -- Inner iteration 2 of Iteration 4 --
362 Array
363 (
364     [a] => 1
365     [b] => string
366     [c] => 
367     [d] => -2.344
368     [] => string
369 )
370
371 -- Inner iteration 3 of Iteration 4 --
372 Array
373 (
374     [a] => 1
375     [b] => string
376     [c] => 
377     [d] => -2.344
378     [0] => 12
379 )
380
381 -- Inner iteration 4 of Iteration 4 --
382 Array
383 (
384     [a] => 1
385     [b] => string
386     [c] => 
387     [d] => -2.344
388 )
389
390 -- Inner iteration 5 of Iteration 4 --
391 Array
392 (
393     [a] => 1
394     [b] => string
395     [c] => 
396     [d] => -2.344
397     [0] => 1
398     [1] => string
399     [2] => 
400     [3] => -2.344
401 )
402
403 -- Inner iteration 6 of Iteration 4 --
404 Array
405 (
406     [a] => 1
407     [b] => string
408     [c] => 
409     [d] => -2.344
410     [0] => 
411     [1] => Hi
412     [string] => hello
413     [2] => Array
414         (
415             [] => World
416             [-2.34] => a
417             [0] => b
418         )
419
420 )
421
422
423 --- Iteration 5 ---
424 -- Inner iteration 0 of Iteration 5 --
425 Array
426 (
427     [0] => 1
428     [1] => string
429     [2] => 
430     [3] => -2.344
431 )
432
433 -- Inner iteration 1 of Iteration 5 --
434 Array
435 (
436     [0] => 1
437     [1] => string
438     [2] => 
439     [3] => -2.344
440     [4] => string
441 )
442
443 -- Inner iteration 2 of Iteration 5 --
444 Array
445 (
446     [0] => 1
447     [1] => string
448     [2] => 
449     [3] => -2.344
450     [] => string
451 )
452
453 -- Inner iteration 3 of Iteration 5 --
454 Array
455 (
456     [0] => 1
457     [1] => string
458     [2] => 
459     [3] => -2.344
460     [4] => 12
461 )
462
463 -- Inner iteration 4 of Iteration 5 --
464 Array
465 (
466     [0] => 1
467     [1] => string
468     [2] => 
469     [3] => -2.344
470     [a] => 1
471     [b] => string
472     [c] => 
473     [d] => -2.344
474 )
475
476 -- Inner iteration 5 of Iteration 5 --
477 Array
478 (
479     [0] => 1
480     [1] => string
481     [2] => 
482     [3] => -2.344
483     [4] => 1
484     [5] => string
485     [6] => 
486     [7] => -2.344
487 )
488
489 -- Inner iteration 6 of Iteration 5 --
490 Array
491 (
492     [0] => 1
493     [1] => string
494     [2] => 
495     [3] => -2.344
496     [4] => 
497     [5] => Hi
498     [string] => hello
499     [6] => Array
500         (
501             [] => World
502             [-2.34] => a
503             [0] => b
504         )
505
506 )
507
508
509 --- Iteration 6 ---
510 -- Inner iteration 0 of Iteration 6 --
511 Array
512 (
513     [0] => 
514     [1] => Hi
515     [string] => hello
516     [2] => Array
517         (
518             [] => World
519             [-2.34] => a
520             [0] => b
521         )
522
523 )
524
525 -- Inner iteration 1 of Iteration 6 --
526 Array
527 (
528     [0] => 
529     [1] => Hi
530     [string] => hello
531     [2] => Array
532         (
533             [] => World
534             [-2.34] => a
535             [0] => b
536         )
537
538     [3] => string
539 )
540
541 -- Inner iteration 2 of Iteration 6 --
542 Array
543 (
544     [0] => 
545     [1] => Hi
546     [string] => hello
547     [2] => Array
548         (
549             [] => World
550             [-2.34] => a
551             [0] => b
552         )
553
554     [] => string
555 )
556
557 -- Inner iteration 3 of Iteration 6 --
558 Array
559 (
560     [0] => 
561     [1] => Hi
562     [string] => hello
563     [2] => Array
564         (
565             [] => World
566             [-2.34] => a
567             [0] => b
568         )
569
570     [3] => 12
571 )
572
573 -- Inner iteration 4 of Iteration 6 --
574 Array
575 (
576     [0] => 
577     [1] => Hi
578     [string] => hello
579     [2] => Array
580         (
581             [] => World
582             [-2.34] => a
583             [0] => b
584         )
585
586     [a] => 1
587     [b] => string
588     [c] => 
589     [d] => -2.344
590 )
591
592 -- Inner iteration 5 of Iteration 6 --
593 Array
594 (
595     [0] => 
596     [1] => Hi
597     [string] => hello
598     [2] => Array
599         (
600             [] => World
601             [-2.34] => a
602             [0] => b
603         )
604
605     [3] => 1
606     [4] => string
607     [5] => 
608     [6] => -2.344
609 )
610
611 -- Inner iteration 6 of Iteration 6 --
612 Array
613 (
614     [0] => 
615     [1] => Hi
616     [string] => hello
617     [2] => Array
618         (
619             [] => World
620             [-2.34] => a
621             [0] => b
622         )
623
624     [3] => 
625     [4] => Hi
626     [5] => Array
627         (
628             [] => World
629             [-2.34] => a
630             [0] => b
631         )
632
633 )
634
635 *** Testing array_merge() with three or more arrays ***
636 array(12) {
637   [0]=>
638   int(1)
639   [1]=>
640   string(6) "string"
641   [2]=>
642   NULL
643   [3]=>
644   float(-2.344)
645   ["a"]=>
646   int(1)
647   ["b"]=>
648   string(6) "string"
649   ["c"]=>
650   NULL
651   ["d"]=>
652   float(-2.344)
653   [4]=>
654   NULL
655   [5]=>
656   string(2) "Hi"
657   ["string"]=>
658   string(5) "hello"
659   [6]=>
660   array(3) {
661     [""]=>
662     string(5) "World"
663     ["-2.34"]=>
664     string(1) "a"
665     [0]=>
666     string(1) "b"
667   }
668 }
669 array(6) {
670   [0]=>
671   int(1)
672   [1]=>
673   string(6) "string"
674   [2]=>
675   NULL
676   [3]=>
677   float(-2.344)
678   [4]=>
679   string(12) "array on fly"
680   ["nullarray"]=>
681   array(0) {
682   }
683 }
684
685 *** Testing single array argument ***
686 array(0) {
687 }
688 array(4) {
689   ["a"]=>
690   int(1)
691   ["b"]=>
692   string(6) "string"
693   ["c"]=>
694   NULL
695   ["d"]=>
696   float(-2.344)
697 }
698 array(4) {
699   [0]=>
700   int(1)
701   [1]=>
702   string(6) "string"
703   [2]=>
704   NULL
705   [3]=>
706   float(-2.344)
707 }
708 array(4) {
709   [0]=>
710   NULL
711   [1]=>
712   string(2) "Hi"
713   ["string"]=>
714   string(5) "hello"
715   [2]=>
716   array(3) {
717     [""]=>
718     string(5) "World"
719     ["-2.34"]=>
720     string(1) "a"
721     [0]=>
722     string(1) "b"
723   }
724 }
725
726 *** Testing array_merge() with typecasting non-array to array ***
727 array(7) {
728   ["a"]=>
729   int(1)
730   ["b"]=>
731   string(6) "string"
732   ["c"]=>
733   NULL
734   ["d"]=>
735   float(-2.344)
736   [0]=>
737   string(5) "type1"
738   [1]=>
739   int(10)
740   [2]=>
741   float(12.34)
742 }
743
744 *** Testing array_merge without any arguments ***
745 array(0) {
746 }
747 Done