Return to array_walk_closure.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / array |
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