函数说明
(PHP 4 >= 4.0.4, PHP 5)
call_user_func_array - 用一个数组作为参数调用一个回调函数.返回值为回调函数执行的结果或者为false(回调函数执行有error时).
[1]
函数定义
mixed call_user_func_array(callback $function , array $param_arr )
把$param_arr数组中的每个值作为参数在$function里执行。
功能
用于多次使用一个函数。参数可以在后面的数组中定义。
参数
要传递参数给函数,作为一个索引数组。
版本说明
5.3.0对象的解释像父性的关键词和自我改变。在此之前,称他们使用双冒号语法将发出一个E_STRICT警告,因为它们是静态的解释。
提示注释
param_arr中引用的变量被传递给函数的参考,无论各自的功能参数,以期望通过引用传递。这种通话时通过引用传递的形式并不过时发出的通知,但它仍不失为过时了,并且很可能会在下一版本的PHP中删除。此外,这并不适用于内部函数,该函数的签名很荣幸。按值传递函数时预计,警告,有call_user_func()返回FALSE参数按引用的结果(不适用,如果传递的值有一个引用计数=1)。如call_user_func()和call_user_func_array()不会被调用,如果有一个未捕获的异常抛出在先前的回调函数。
实例说明
例-1
<?php
function foobar($arg, $arg2) {
echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
function bar($arg, $arg2) {
echo __METHOD__, " got $arg and $arg2\n";
}
}
// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));
// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>
输出类似于:
foobar got one and two
foo::bar got three and four
例子-2 call_user_func_array() 使用命名空间名称
<?php
namespace Foobar;
class Foo {
static public function test($name) {
print "Hello {$name}!\n";
}
}
// As of PHP 5.3.0
call_user_func_array(__NAMESPACE__ .'\Foo::test', array('Hannes'));
// As of PHP 5.3.0
call_user_func_array(array(__NAMESPACE__ .'\Foo', 'test'), array('Philip'));
?>
输出类似于:
Hello Hannes!
Hello Philip!
例-3
<?php
$func = function($arg1, $arg2) {
return $arg1 * $arg2;
};
var_dump(call_user_func_array($func, array(2, 4))); /* As of PHP 5.3.0 */
?>
将输出:
int(8)