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