如何将函数从 create_function 升级为匿名函数
How upgrade function from create_function to 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());
}
您可以这样创建匿名函数:
<?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
中被弃用
我试图了解您的功能的用途,但我的结论是它取决于您为其构建的 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 )
我需要修改函数,使其不使用 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());
}
您可以这样创建匿名函数:
<?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
我试图了解您的功能的用途,但我的结论是它取决于您为其构建的 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 )