Annotation of embedaddon/php/ext/standard/tests/array/array_merge_recursive_variation3.phpt, revision 1.1.1.2

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>