我有一个标题为$post_data
的数组。我想将此数组作为参数传递给某个函数。除了这个数组,我还要传递另一个参数,即可调用的'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;
}
The function call that I tried is as follows :
//Call to the function walk_recursive_remove
$result = walk_recursive_remove($post_data, unset_null_children);
有人可以帮我纠正我在调用函数时所犯的错误吗?
提前致谢。
答案 0 :(得分:5)
首先,通过使用
调用函数的方式与您想要的方式类似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');
答案 1 :(得分:1)