From 50dddf94f50b9aef56d9eebe8dce65bd306d50f7 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Tue, 19 Sep 2006 09:39:14 +0000 Subject: [PATCH] support objects in array_walk() --- ext/standard/array.c | 3 +- .../tests/array/array_walk_objects.phpt | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 ext/standard/tests/array/array_walk_objects.phpt diff --git a/ext/standard/array.c b/ext/standard/array.c index 0ab2356e7f..8954d043cc 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1028,7 +1028,6 @@ static int php_array_walk(HashTable *target_hash, zval **userdata TSRMLS_DC) Apply a user function to every member of an array */ PHP_FUNCTION(array_walk) { - int argc; zval *array, *userdata = NULL, *tmp, @@ -1036,7 +1035,7 @@ PHP_FUNCTION(array_walk) HashTable *target_hash; old_walk_func_name = BG(array_walk_func_name); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "az|z", &array, &tmp, &userdata) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz|z", &array, &tmp, &userdata) == FAILURE) { return; } target_hash = HASH_OF(array); diff --git a/ext/standard/tests/array/array_walk_objects.phpt b/ext/standard/tests/array/array_walk_objects.phpt new file mode 100644 index 0000000000..21329f54ae --- /dev/null +++ b/ext/standard/tests/array/array_walk_objects.phpt @@ -0,0 +1,41 @@ +--TEST-- +array_walk() and objects +--FILE-- +foo = "foo"; +$stdclass->bar = "bar"; +array_walk($stdclass, "walk"); + +$t = new test; +array_walk($t, "walk"); + +$var = array(); +array_walk($var, "walk"); +$var = ""; +array_walk($var, "walk"); + +echo "Done\n"; +?> +--EXPECTF-- +string(3) "foo" +string(3) "foo" +string(3) "bar" +string(3) "bar" +string(5) "var_1" +string(6) "test_1" +string(5) "var_2" +string(6) "test_2" + +Warning: array_walk() [/phpmanual/function.array-walk.html]: The argument should be an array in %s on line %d +Done -- 2.50.1