理解PHP的匿名函数

Edg*_*ere 6 php anonymous-function web-deployment

我一直在使用php学习web开发,我对匿名函数有点困惑.特别是关于参数的传递以及它们如何在这样的函数内工作.例如,在代码中

$array = array("really long string here, boy", "this", "middling length", "larger");
usort($array, function($a, $b) {
return strlen($a) - strlen($b);
});
print_r($array);
Run Code Online (Sandbox Code Playgroud)

我真的不明白怎样的参数$a$b使用.我认为它们是为了比较而对数组进行排序,以确定函数应该如何使用它们并将它们从中取出?
在下一个代码中

$mult = function($x)
{
 return $x * 5;
};
echo $mult(2);
Run Code Online (Sandbox Code Playgroud)

我知道参数直接传递给函数并用于返回乘法的结果.
在这篇文章中的例子

$arr = range(0, 10);
$arr_even = array_filter($arr, function($val) { return $val % 2 == 0; });
$arr_square = array_map(function($val) { return $val * $val; }, $arr);
Run Code Online (Sandbox Code Playgroud)

变量$val取自哪里?

我知道也许这并不像看起来那么复杂,但我真的很困惑在这种功能上使用参数

Roc*_*mat 9

usort($array, function($a, $b) {
    return strlen($a) - strlen($b);
});
Run Code Online (Sandbox Code Playgroud)

我们来看看这个例子吧.当你传递一个函数时usort(),PHP在内部用你的数组中的2个元素调用它来查看哪个更大/更小.

$a$b值来自内部usort()功能.它的代码用2个参数调用提供的函数.您的参数不需要被命名为$a$b,它们可以被命名为任何你喜欢的.

  • 如果你想在一个带有一组特定参数的数组中调用一个匿名函数,你可以做`$ anonymous($ var1,$ var2)`或`$ result = call_user_func($ anonymous,$ var1,$ var2)` (2认同)