如何将功能从create_function升级到匿名函数

时间:2019-08-26 19:21:35

标签: php anonymous-function

我需要修改该函数,以使其不使用create_function。我想使用匿名功能,但我不知道如何使用它。

function arrayUniqueMerge()
{
    $variables = '$_' . implode(',$_', array_keys(func_get_args()));
    $func = create_function('$tab', ' list(' . $variables . ') = $tab; return array_unique(array_merge(' . $variables . '));');
    return $func(func_get_args());
}

2 个答案:

答案 0 :(得分:2)

我试图了解您的功能的目的,但是我的结论是,它取决于您为其构建的PHP版本。

但是,我已经意识到,很可能在PHP 7中可以将您的函数重构为以下形式:

function arrayUniqueMerge2(...$args) {
    return array_unique(array_merge(...$args));
}

使用示例数据对其进行测试:

print_r(arrayUniqueMerge2(['a', 'b'], ['b', 'c'], ['c', 'd']));
//Array ( [0] => a [1] => b [3] => c [5] => d )

答案 1 :(得分:0)

您可以这样创建匿名函数:

<?php

$myfunc = function ($x) {
  return $x . ' world';
};

echo $myfunc('Hello'); //Echoes "Hello world"

在文档中了解有关匿名功能的更多信息:https://www.php.net/manual/en/functions.anonymous.php

create_function也已弃用PHP 7.2.0