Annotation of embedaddon/php/ext/standard/tests/array/array_merge_variation3.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test array_merge() function : usage variations - arrays of diff. data types
                      3: --FILE--
                      4: <?php
                      5: /* Prototype  : array array_merge(array $arr1, array $arr2 [, array $...])
                      6:  * Description: Merges elements from passed arrays into one array 
                      7:  * Source code: ext/standard/array.c
                      8:  */
                      9: 
                     10: /*
                     11:  * Pass arrays of different data types to test how array_merge adds them
                     12:  * onto an existing array
                     13:  */
                     14: 
                     15: echo "*** Testing array_merge() : usage variations ***\n";
                     16: 
                     17: // Initialise function arguments not being substituted
                     18: $arr = array (1, 2);
                     19: 
                     20: //get an unset variable
                     21: $unset_var = 10;
                     22: unset ($unset_var);
                     23: 
                     24: // get a class
                     25: class classA
                     26: {
                     27:   public function __toString() {
                     28:     return "Class A object";
                     29:   }
                     30: }
                     31: 
                     32: // heredoc string
                     33: $heredoc = <<<EOT
                     34: hello world
                     35: EOT;
                     36: 
                     37: // get a resource variable
                     38: $fp = fopen(__FILE__, "r");
                     39: 
                     40: // arrays of different data types to be passed as $input
                     41: $inputs = array(
                     42: 
                     43:        // int data
                     44: /*1*/  'int' => array(
                     45:           0,
                     46:        1,
                     47:        12345,
                     48:        -2345,
                     49:        ),
                     50: 
                     51:        // float data
                     52: /*2*/  'float' => array(
                     53:        10.5,
                     54:        -10.5,
                     55:        12.3456789000e10,
                     56:        12.3456789000E-10,
                     57:        .5,
                     58:        ),
                     59: 
                     60:        // null data
                     61: /*3*/ 'null' => array(
                     62:        NULL,
                     63:        null,
                     64:        ),
                     65: 
                     66:        // boolean data
                     67: /*4*/ 'bool' => array(
                     68:        true,
                     69:        false,
                     70:        TRUE,
                     71:        FALSE,
                     72:        ),
                     73:        
                     74:        // empty data
                     75: /*5*/ 'empty string' => array(
                     76:        "",
                     77:        '',
                     78:        ),
                     79:        
                     80: /*6*/ 'empty array' => array(
                     81:        ),
                     82: 
                     83:        // string data
                     84: /*7*/ 'string' => array(
                     85:        "string",
                     86:        'string',
                     87:        $heredoc,
                     88:        ),
                     89:        
                     90:        // object data
                     91: /*8*/ 'object' => array(
                     92:        new classA(),
                     93:        ),
                     94: 
                     95:        // undefined data
                     96: /*9*/ 'undefined' => array(
                     97:        @$undefined_var,
                     98:        ),
                     99: 
                    100:        // unset data
                    101: /*10*/ 'unset' => array(
                    102:        @$unset_var,
                    103:        ),
                    104: 
                    105:        // resource variable
                    106: /*11*/ 'resource' => array(
                    107:        $fp
                    108:        ),
                    109: );
                    110: 
                    111: // loop through each element of $inputs to check the behavior of array_merge
                    112: $iterator = 1;
                    113: foreach($inputs as $key => $input) {
                    114:   echo "\n-- Iteration $iterator: $key data --\n";
                    115:   var_dump( array_merge($input, $arr) );
                    116:   var_dump( array_merge($arr, $input) );
                    117:   $iterator++;
                    118: };
                    119: 
                    120: fclose($fp);
                    121: 
                    122: echo "Done";
                    123: ?>
                    124: 
                    125: --EXPECTF--
                    126: *** Testing array_merge() : usage variations ***
                    127: 
                    128: -- Iteration 1: int data --
                    129: array(6) {
                    130:   [0]=>
                    131:   int(0)
                    132:   [1]=>
                    133:   int(1)
                    134:   [2]=>
                    135:   int(12345)
                    136:   [3]=>
                    137:   int(-2345)
                    138:   [4]=>
                    139:   int(1)
                    140:   [5]=>
                    141:   int(2)
                    142: }
                    143: array(6) {
                    144:   [0]=>
                    145:   int(1)
                    146:   [1]=>
                    147:   int(2)
                    148:   [2]=>
                    149:   int(0)
                    150:   [3]=>
                    151:   int(1)
                    152:   [4]=>
                    153:   int(12345)
                    154:   [5]=>
                    155:   int(-2345)
                    156: }
                    157: 
                    158: -- Iteration 2: float data --
                    159: array(7) {
                    160:   [0]=>
                    161:   float(10.5)
                    162:   [1]=>
                    163:   float(-10.5)
                    164:   [2]=>
                    165:   float(123456789000)
                    166:   [3]=>
                    167:   float(1.23456789E-9)
                    168:   [4]=>
                    169:   float(0.5)
                    170:   [5]=>
                    171:   int(1)
                    172:   [6]=>
                    173:   int(2)
                    174: }
                    175: array(7) {
                    176:   [0]=>
                    177:   int(1)
                    178:   [1]=>
                    179:   int(2)
                    180:   [2]=>
                    181:   float(10.5)
                    182:   [3]=>
                    183:   float(-10.5)
                    184:   [4]=>
                    185:   float(123456789000)
                    186:   [5]=>
                    187:   float(1.23456789E-9)
                    188:   [6]=>
                    189:   float(0.5)
                    190: }
                    191: 
                    192: -- Iteration 3: null data --
                    193: array(4) {
                    194:   [0]=>
                    195:   NULL
                    196:   [1]=>
                    197:   NULL
                    198:   [2]=>
                    199:   int(1)
                    200:   [3]=>
                    201:   int(2)
                    202: }
                    203: array(4) {
                    204:   [0]=>
                    205:   int(1)
                    206:   [1]=>
                    207:   int(2)
                    208:   [2]=>
                    209:   NULL
                    210:   [3]=>
                    211:   NULL
                    212: }
                    213: 
                    214: -- Iteration 4: bool data --
                    215: array(6) {
                    216:   [0]=>
                    217:   bool(true)
                    218:   [1]=>
                    219:   bool(false)
                    220:   [2]=>
                    221:   bool(true)
                    222:   [3]=>
                    223:   bool(false)
                    224:   [4]=>
                    225:   int(1)
                    226:   [5]=>
                    227:   int(2)
                    228: }
                    229: array(6) {
                    230:   [0]=>
                    231:   int(1)
                    232:   [1]=>
                    233:   int(2)
                    234:   [2]=>
                    235:   bool(true)
                    236:   [3]=>
                    237:   bool(false)
                    238:   [4]=>
                    239:   bool(true)
                    240:   [5]=>
                    241:   bool(false)
                    242: }
                    243: 
                    244: -- Iteration 5: empty string data --
                    245: array(4) {
                    246:   [0]=>
                    247:   string(0) ""
                    248:   [1]=>
                    249:   string(0) ""
                    250:   [2]=>
                    251:   int(1)
                    252:   [3]=>
                    253:   int(2)
                    254: }
                    255: array(4) {
                    256:   [0]=>
                    257:   int(1)
                    258:   [1]=>
                    259:   int(2)
                    260:   [2]=>
                    261:   string(0) ""
                    262:   [3]=>
                    263:   string(0) ""
                    264: }
                    265: 
                    266: -- Iteration 6: empty array data --
                    267: array(2) {
                    268:   [0]=>
                    269:   int(1)
                    270:   [1]=>
                    271:   int(2)
                    272: }
                    273: array(2) {
                    274:   [0]=>
                    275:   int(1)
                    276:   [1]=>
                    277:   int(2)
                    278: }
                    279: 
                    280: -- Iteration 7: string data --
                    281: array(5) {
                    282:   [0]=>
                    283:   string(6) "string"
                    284:   [1]=>
                    285:   string(6) "string"
                    286:   [2]=>
                    287:   string(11) "hello world"
                    288:   [3]=>
                    289:   int(1)
                    290:   [4]=>
                    291:   int(2)
                    292: }
                    293: array(5) {
                    294:   [0]=>
                    295:   int(1)
                    296:   [1]=>
                    297:   int(2)
                    298:   [2]=>
                    299:   string(6) "string"
                    300:   [3]=>
                    301:   string(6) "string"
                    302:   [4]=>
                    303:   string(11) "hello world"
                    304: }
                    305: 
                    306: -- Iteration 8: object data --
                    307: array(3) {
                    308:   [0]=>
                    309:   object(classA)#%d (0) {
                    310:   }
                    311:   [1]=>
                    312:   int(1)
                    313:   [2]=>
                    314:   int(2)
                    315: }
                    316: array(3) {
                    317:   [0]=>
                    318:   int(1)
                    319:   [1]=>
                    320:   int(2)
                    321:   [2]=>
                    322:   object(classA)#%d (0) {
                    323:   }
                    324: }
                    325: 
                    326: -- Iteration 9: undefined data --
                    327: array(3) {
                    328:   [0]=>
                    329:   NULL
                    330:   [1]=>
                    331:   int(1)
                    332:   [2]=>
                    333:   int(2)
                    334: }
                    335: array(3) {
                    336:   [0]=>
                    337:   int(1)
                    338:   [1]=>
                    339:   int(2)
                    340:   [2]=>
                    341:   NULL
                    342: }
                    343: 
                    344: -- Iteration 10: unset data --
                    345: array(3) {
                    346:   [0]=>
                    347:   NULL
                    348:   [1]=>
                    349:   int(1)
                    350:   [2]=>
                    351:   int(2)
                    352: }
                    353: array(3) {
                    354:   [0]=>
                    355:   int(1)
                    356:   [1]=>
                    357:   int(2)
                    358:   [2]=>
                    359:   NULL
                    360: }
                    361: 
                    362: -- Iteration 11: resource data --
                    363: array(3) {
                    364:   [0]=>
                    365:   resource(%d) of type (stream)
                    366:   [1]=>
                    367:   int(1)
                    368:   [2]=>
                    369:   int(2)
                    370: }
                    371: array(3) {
                    372:   [0]=>
                    373:   int(1)
                    374:   [1]=>
                    375:   int(2)
                    376:   [2]=>
                    377:   resource(%d) of type (stream)
                    378: }
                    379: Done

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