From: Antony Dovgal Date: Tue, 19 Sep 2006 09:39:14 +0000 (+0000) Subject: support objects in array_walk() X-Git-Tag: php-4.4.5RC1~65 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=50dddf94f50b9aef56d9eebe8dce65bd306d50f7;p=php support objects in array_walk() --- 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