如何调用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);