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

1.1       misho       1: --TEST--
                      2: Test array_combine() function : usage variations - associative array with different values(Bug#43424)
                      3: --FILE--
                      4: <?php
                      5: /* Prototype  : array array_combine(array $keys, array $values)
                      6:  * Description: Creates an array by using the elements of the first parameter as keys
                      7:  *              and the elements of the second as the corresponding values
                      8:  * Source code: ext/standard/array.c
                      9: */
                     10: 
                     11: /*
                     12: * Testing the functionality of array_combine() by passing various
                     13: * associative arrays having different possible values to $keys argument and
                     14: * associative arrays having different possible values to $values argument.
                     15: */
                     16: 
                     17: echo "*** Testing array_combine() : assoc array with diff values to both \$keys and \$values argument ***\n";
                     18: 
                     19: // get an unset variable
                     20: $unset_var = 10;
                     21: unset ($unset_var);
                     22: 
                     23: // get a resource variable
                     24: $fp = fopen(__FILE__, "r");
                     25: 
                     26: // get a class
                     27: class classA
                     28: {
                     29: public function __toString(){
                     30: return "Class A object";
                     31: }
                     32: }
                     33: 
                     34: // get a heredoc string
                     35: $heredoc = <<<EOT
                     36: Hello world
                     37: EOT;
                     38: 
                     39: // different variations of associative array
                     40: $arrays = array (
                     41: 
                     42:        // empty array
                     43: /*1*/  array(),
                     44: 
                     45:        // arrays with integer values
                     46:        array('0' => 0),
                     47:        array("1" => 1),
                     48:        array("one" => 1, 'two' => 2, "three" => 3, 4 => 4),
                     49: 
                     50:        // arrays with float values
                     51: /*5*/  array("float" => 2.3333),
                     52:        array("f1" => 1.2, 'f2' => 3.33, 3 => 4.89999922839999, 'f4' => 33333333.333),
                     53: 
                     54:        // arrays with string values
                     55: /*7*/  array(111 => "\tHello", "red" => "col\tor", 2 => "\v\fworld", 3.3 =>  "pen\n"),
                     56:        array(111 => '\tHello', "red" => 'col\tor', 2 => '\v\fworld', 3.3 =>  'pen\n'),
                     57:        array(1 => "hello", "heredoc" => $heredoc),
                     58: 
                     59:        // array with object, unset variable and resource variable
                     60: /*10*/ array(11 => new classA(), "unset" => @$unset_var, "resource" => $fp),
                     61: 
                     62:        // array with mixed values
                     63: /*11*/ array(1 => 'hello', 2 => new classA(), 222 => "fruit", 
                     64:              'resource' => $fp, "int" => 133, "float" => 444.432, 
                     65:              "unset" => @$unset_var, "heredoc" => $heredoc)
                     66: );
                     67: 
                     68: 
                     69: // loop through each sub-array within $arrays to check the behavior of array_combine()
                     70: $iterator = 1;
                     71: foreach($arrays as $array) {
                     72:   echo "-- Iteration $iterator --\n";
                     73:   var_dump( array_combine($array, $array) );
                     74:   $iterator++;
                     75: }
                     76: 
                     77: // close the file resource used
                     78: fclose($fp);
                     79: 
                     80: echo "Done";
                     81: ?>
                     82: --EXPECTF--
                     83: *** Testing array_combine() : assoc array with diff values to both $keys and $values argument ***
                     84: -- Iteration 1 --
                     85: 
                     86: Warning: array_combine(): Both parameters should have at least 1 element in %s on line %d
                     87: bool(false)
                     88: -- Iteration 2 --
                     89: array(1) {
                     90:   [0]=>
                     91:   int(0)
                     92: }
                     93: -- Iteration 3 --
                     94: array(1) {
                     95:   [1]=>
                     96:   int(1)
                     97: }
                     98: -- Iteration 4 --
                     99: array(4) {
                    100:   [1]=>
                    101:   int(1)
                    102:   [2]=>
                    103:   int(2)
                    104:   [3]=>
                    105:   int(3)
                    106:   [4]=>
                    107:   int(4)
                    108: }
                    109: -- Iteration 5 --
                    110: array(1) {
                    111:   ["2.3333"]=>
                    112:   float(2.3333)
                    113: }
                    114: -- Iteration 6 --
                    115: array(4) {
                    116:   ["1.2"]=>
                    117:   float(1.2)
                    118:   ["3.33"]=>
                    119:   float(3.33)
                    120:   ["4.8999992284"]=>
                    121:   float(4.8999992284)
                    122:   ["33333333.333"]=>
                    123:   float(33333333.333)
                    124: }
                    125: -- Iteration 7 --
                    126: array(4) {
                    127:   ["   Hello"]=>
                    128:   string(6) "  Hello"
                    129:   ["col        or"]=>
                    130:   string(6) "col       or"
                    131:   ["world"]=>
                    132:   string(7) "world"
                    133:   ["pen
                    134: "]=>
                    135:   string(4) "pen
                    136: "
                    137: }
                    138: -- Iteration 8 --
                    139: array(4) {
                    140:   ["\tHello"]=>
                    141:   string(7) "\tHello"
                    142:   ["col\tor"]=>
                    143:   string(7) "col\tor"
                    144:   ["\v\fworld"]=>
                    145:   string(9) "\v\fworld"
                    146:   ["pen\n"]=>
                    147:   string(5) "pen\n"
                    148: }
                    149: -- Iteration 9 --
                    150: array(2) {
                    151:   ["hello"]=>
                    152:   string(5) "hello"
                    153:   ["Hello world"]=>
                    154:   string(11) "Hello world"
                    155: }
                    156: -- Iteration 10 --
                    157: array(3) {
                    158:   ["Class A object"]=>
                    159:   object(classA)#%d (0) {
                    160:   }
                    161:   [""]=>
                    162:   NULL
                    163:   ["Resource id #%d"]=>
                    164:   resource(%d) of type (stream)
                    165: }
                    166: -- Iteration 11 --
                    167: array(8) {
                    168:   ["hello"]=>
                    169:   string(5) "hello"
                    170:   ["Class A object"]=>
                    171:   object(classA)#%d (0) {
                    172:   }
                    173:   ["fruit"]=>
                    174:   string(5) "fruit"
                    175:   ["Resource id #%d"]=>
                    176:   resource(%d) of type (stream)
                    177:   [133]=>
                    178:   int(133)
                    179:   ["444.432"]=>
                    180:   float(444.432)
                    181:   [""]=>
                    182:   NULL
                    183:   ["Hello world"]=>
                    184:   string(11) "Hello world"
                    185: }
                    186: Done

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