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

1.1       misho       1: --TEST--
                      2: array_walk() closure tests
                      3: --FILE--
                      4: <?php
                      5: 
                      6: var_dump(array_walk());
                      7: 
                      8: $ar = false;
                      9: var_dump(array_walk($ar, $ar));
                     10: 
                     11: $ar = NULL;
                     12: var_dump(array_walk($ar, $ar));
                     13: 
                     14: $ar = ["one" => 1, "two"=>2, "three" => 3];
                     15: var_dump(array_walk($ar, function(){ var_dump(func_get_args());}));
                     16: 
                     17: echo "\nclosure with array\n";
                     18: $ar = ["one" => 1, "two"=>2, "three" => 3];
                     19: $user_data = ["sum" => 42];
                     20: $func = function($value, $key, &$udata) {
                     21:        var_dump($udata);
                     22:        $udata["sum"] += $value;
                     23: };
                     24: 
                     25: var_dump(array_walk($ar, $func, $user_data));
                     26: echo "End result:";
                     27: var_dump($user_data["sum"]);
                     28: 
                     29: echo "\nclosure with use\n";
                     30: $ar = ["one" => 1, "two"=>2, "three" => 3];
                     31: $user_data = ["sum" => 42];
                     32: $func = function($value, $key) use (&$user_data) {
                     33:        var_dump($user_data);
                     34:        $user_data["sum"] += $value;
                     35: };
                     36: 
                     37: var_dump(array_walk($ar, $func, $user_data));
                     38: echo "End result:";
                     39: var_dump($user_data["sum"]);
                     40: 
                     41: 
                     42: echo "\nclosure with object\n";
                     43: $ar = ["one" => 1, "two"=>2, "three" => 3];
                     44: $user_data = (object)["sum" => 42];
                     45: $func = function($value, $key, &$udata) {
                     46:        var_dump($udata);
                     47:        $udata->sum += $value;
                     48: };
                     49: 
                     50: var_dump(array_walk($ar, $func, $user_data));
                     51: echo "End result:";
                     52: var_dump($user_data->sum);
                     53: 
                     54: 
                     55: 
                     56: echo "\nfunction with object\n";
                     57: function sum_it_up_object($value, $key, $udata)
                     58: {
                     59:        var_dump($udata);
                     60:        $udata->sum += $value;
                     61: }
                     62: 
                     63: $ar = ["one" => 1, "two"=>2, "three" => 3];
                     64: $user_data = (object)["sum" => 42];
                     65: 
                     66: var_dump(array_walk($ar, "sum_it_up_object", $user_data));
                     67: echo "End result:";
                     68: var_dump($user_data->sum);
                     69: 
                     70: 
                     71: echo "\nfunction with array\n";
                     72: function sum_it_up_array($value, $key, $udata)
                     73: {
                     74:        var_dump($udata);
                     75:        $udata['sum'] += $value;
                     76: }
                     77: 
                     78: $ar = ["one" => 1, "two"=>2, "three" => 3];
                     79: $user_data = ["sum" => 42];
                     80: 
                     81: var_dump(array_walk($ar, "sum_it_up_array", $user_data));
                     82: echo "End result:";
                     83: var_dump($user_data['sum']);
                     84: 
                     85: echo "\nclosure and exception\n";
                     86: $ar = ["one" => 1, "two"=>2, "three" => 3];
                     87: try {
                     88:        var_dump(array_walk($ar, function($v, $k) { if ($v == 2) throw new Exception; } ));
                     89: } catch (Exception $e) {
                     90:        var_dump($e->getTrace());
                     91: }
                     92: 
                     93: 
                     94: echo "Done\n";
                     95: ?>
                     96: --EXPECTF--    
                     97: Warning: array_walk() expects at least 2 parameters, 0 given in %s on line %d
                     98: NULL
                     99: 
                    100: Warning: array_walk() expects parameter 1 to be array, boolean given in %s on line %d
                    101: NULL
                    102: 
                    103: Warning: array_walk() expects parameter 1 to be array, null given in %s on line %d
                    104: NULL
                    105: array(2) {
                    106:   [0]=>
                    107:   int(1)
                    108:   [1]=>
                    109:   string(3) "one"
                    110: }
                    111: array(2) {
                    112:   [0]=>
                    113:   int(2)
                    114:   [1]=>
                    115:   string(3) "two"
                    116: }
                    117: array(2) {
                    118:   [0]=>
                    119:   int(3)
                    120:   [1]=>
                    121:   string(5) "three"
                    122: }
                    123: bool(true)
                    124: 
                    125: closure with array
                    126: array(1) {
                    127:   ["sum"]=>
                    128:   int(42)
                    129: }
                    130: array(1) {
                    131:   ["sum"]=>
                    132:   int(43)
                    133: }
                    134: array(1) {
                    135:   ["sum"]=>
                    136:   int(45)
                    137: }
                    138: bool(true)
                    139: End result:int(42)
                    140: 
                    141: closure with use
                    142: array(1) {
                    143:   ["sum"]=>
                    144:   int(42)
                    145: }
                    146: array(1) {
                    147:   ["sum"]=>
                    148:   int(43)
                    149: }
                    150: array(1) {
                    151:   ["sum"]=>
                    152:   int(45)
                    153: }
                    154: bool(true)
                    155: End result:int(48)
                    156: 
                    157: closure with object
                    158: object(stdClass)#1 (1) {
                    159:   ["sum"]=>
                    160:   int(42)
                    161: }
                    162: object(stdClass)#1 (1) {
                    163:   ["sum"]=>
                    164:   int(43)
                    165: }
                    166: object(stdClass)#1 (1) {
                    167:   ["sum"]=>
                    168:   int(45)
                    169: }
                    170: bool(true)
                    171: End result:int(48)
                    172: 
                    173: function with object
                    174: object(stdClass)#2 (1) {
                    175:   ["sum"]=>
                    176:   int(42)
                    177: }
                    178: object(stdClass)#2 (1) {
                    179:   ["sum"]=>
                    180:   int(43)
                    181: }
                    182: object(stdClass)#2 (1) {
                    183:   ["sum"]=>
                    184:   int(45)
                    185: }
                    186: bool(true)
                    187: End result:int(48)
                    188: 
                    189: function with array
                    190: array(1) {
                    191:   ["sum"]=>
                    192:   int(42)
                    193: }
                    194: array(1) {
                    195:   ["sum"]=>
                    196:   int(42)
                    197: }
                    198: array(1) {
                    199:   ["sum"]=>
                    200:   int(42)
                    201: }
                    202: bool(true)
                    203: End result:int(42)
                    204: 
                    205: closure and exception
                    206: array(2) {
                    207:   [0]=>
                    208:   array(2) {
                    209:     ["function"]=>
                    210:     string(9) "{closure}"
                    211:     ["args"]=>
                    212:     array(2) {
                    213:       [0]=>
                    214:       int(2)
                    215:       [1]=>
                    216:       string(3) "two"
                    217:     }
                    218:   }
                    219:   [1]=>
                    220:   array(4) {
                    221:     ["file"]=>
                    222:     string(%d) "%s"
                    223:     ["line"]=>
                    224:     int(%d)
                    225:     ["function"]=>
                    226:     string(10) "array_walk"
                    227:     ["args"]=>
                    228:     array(2) {
                    229:       [0]=>
                    230:       &array(3) {
                    231:         ["one"]=>
                    232:         int(1)
                    233:         ["two"]=>
                    234:         int(2)
                    235:         ["three"]=>
                    236:         int(3)
                    237:       }
                    238:       [1]=>
                    239:       object(Closure)#2 (1) {
                    240:         ["parameter"]=>
                    241:         array(2) {
                    242:           ["$v"]=>
                    243:           string(10) "<required>"
                    244:           ["$k"]=>
                    245:           string(10) "<required>"
                    246:         }
                    247:       }
                    248:     }
                    249:   }
                    250: }
                    251: Done

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