]> granicus.if.org Git - php/commitdiff
@- Updated array_walk() to be able to accept array($obj, 'method')
authorAndrei Zmievski <andrei@php.net>
Tue, 22 Aug 2000 18:39:29 +0000 (18:39 +0000)
committerAndrei Zmievski <andrei@php.net>
Tue, 22 Aug 2000 18:39:29 +0000 (18:39 +0000)
@  syntax for the walk function. (Andrei)

ext/standard/array.c

index 844b1f4ea3869e2f9a661d89a12fcd291af74719..f6784cfe86eccd67c4270e82d10f13509061ff51 100644 (file)
@@ -1015,11 +1015,18 @@ PHP_FUNCTION(array_walk) {
        }
        target_hash = HASH_OF(*array);
        if (!target_hash) {
-               php_error(E_WARNING, "Wrong datatype in array_walk() call");
+               php_error(E_WARNING, "Wrong datatype in %s() call",
+                                 get_active_function_name());
+               BG(array_walk_func_name) = old_walk_func_name;
+               RETURN_FALSE;
+       }
+       if (Z_TYPE_PP(BG(array_walk_func_name)) != IS_ARRAY && 
+               Z_TYPE_PP(BG(array_walk_func_name)) != IS_STRING) {
+               php_error(E_WARNING, "Wrong syntax for function name in %s() call",
+                                 get_active_function_name());
                BG(array_walk_func_name) = old_walk_func_name;
                RETURN_FALSE;
        }
-       convert_to_string_ex(BG(array_walk_func_name));
        php_array_walk(target_hash, userdata);
        BG(array_walk_func_name) = old_walk_func_name;
        RETURN_TRUE;