使用splat运算符将array_diff_uassoc转换为静态方法的问题

时间:2018-04-22 00:06:38

标签: php

PHP中有一个名为array_diff_uassoc的函数。

根据PHP Api,其功能参数为:

array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

我正在尝试将其转换为静态方法:

public static function arrayDiffUassoc(array $array1,array $array2,...$arrays,callable $keyCompareFunc):array
{
    return array_diff_uassoc($array1,$array2,...$arrays,$keyCompareFunc);
}

问题是我不能明确地使用splat运算符作为第3个参数,因为它显然必须是最后一个参数。

如何将此函数实现为静态方法,并且遵循splat运算符以及最后一个参数是可调用函数?

我正在尝试以与PHP Api

相同的方式实现此功能

1 个答案:

答案 0 :(得分:1)

不幸的是,必须将变量符指定为函数声明中的最后一个参数。否则他们就不能工作了。

您可以依靠旧学校func_get_args,然后call_user_func_array

来完成您尝试做的事情

参见Variadics:http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

请参阅func_get_argshttp://php.net/manual/en/function.func-get-args.php

请参阅call_user_func_arrayhttp://php.net/manual/en/function.call-user-func-array.php