如何调用PHP中的可调用函数?
How to call the callable function in PHP?
我有一个名为 $post_data
的数组。我想将这个数组作为参数传递给某个函数。除了这个数组,我还必须将另一个参数 callable 'function name' 作为函数调用中的第二个参数传递。
我不明白如何实现。
下面是需要调用的函数体:
//Following is the function to be called
function walk_recursive_remove(array $array, callable $callback) {
foreach ($array as $k => $v) {
if (is_array($v)) {
$array[$k] = walk_recursive_remove($v, $callback);
} else {
if ($callback($v, $k)) {
unset($array[$k]);
}
}
}
return $array;
}
//Following is the callback function to be called
function unset_null_children($value, $key){
return $value == NULL ? true : false;
}
我试过的函数调用如下:
//Call to the function walk_recursive_remove
$result = walk_recursive_remove($post_data, unset_null_children);
有人可以帮我纠正我在调用函数时犯的错误吗?
提前致谢。
首先,按照您想要的方式调用函数的方法是使用
call_user_func()
或
call_user_func_array()
在你的例子中,因为你想发送参数,你想使用第二个,call_user_func_array()
。
您可以在 http://php.net/manual/en/language.types.callable.php.
上找到更多相关信息
与此同时,我稍微简化了您的示例并创建了一个小示例。
function walk_recursive_remove(array $array, callable $callback) {
foreach($array as $k => $v){
call_user_func_array($callback,array($k,$v));
}
}
//Following is the callback function to be called
function unset_null_children($key, $value){
echo 'the key : '.$key.' | the value : '.$value ;
}
//Call to the function walk_recursive_remove
$post_data = array('this_is_a_key' => 'this_is_a_value');
$result = walk_recursive_remove($post_data, 'unset_null_children');
使用 PHP 7,您可以在任何地方使用更好的变量函数语法。它与 static/instance 函数一起使用,并且可以采用参数数组。更多信息 here and related question here
$ret = $callable(...$params);
我有一个名为 $post_data
的数组。我想将这个数组作为参数传递给某个函数。除了这个数组,我还必须将另一个参数 callable 'function name' 作为函数调用中的第二个参数传递。
我不明白如何实现。
下面是需要调用的函数体:
//Following is the function to be called
function walk_recursive_remove(array $array, callable $callback) {
foreach ($array as $k => $v) {
if (is_array($v)) {
$array[$k] = walk_recursive_remove($v, $callback);
} else {
if ($callback($v, $k)) {
unset($array[$k]);
}
}
}
return $array;
}
//Following is the callback function to be called
function unset_null_children($value, $key){
return $value == NULL ? true : false;
}
我试过的函数调用如下:
//Call to the function walk_recursive_remove
$result = walk_recursive_remove($post_data, unset_null_children);
有人可以帮我纠正我在调用函数时犯的错误吗?
提前致谢。
首先,按照您想要的方式调用函数的方法是使用
call_user_func()
或
call_user_func_array()
在你的例子中,因为你想发送参数,你想使用第二个,call_user_func_array()
。
您可以在 http://php.net/manual/en/language.types.callable.php.
上找到更多相关信息与此同时,我稍微简化了您的示例并创建了一个小示例。
function walk_recursive_remove(array $array, callable $callback) {
foreach($array as $k => $v){
call_user_func_array($callback,array($k,$v));
}
}
//Following is the callback function to be called
function unset_null_children($key, $value){
echo 'the key : '.$key.' | the value : '.$value ;
}
//Call to the function walk_recursive_remove
$post_data = array('this_is_a_key' => 'this_is_a_value');
$result = walk_recursive_remove($post_data, 'unset_null_children');
使用 PHP 7,您可以在任何地方使用更好的变量函数语法。它与 static/instance 函数一起使用,并且可以采用参数数组。更多信息 here and related question here
$ret = $callable(...$params);