匿名函数是没有任何用户定义名称的函数。这样的函数也称为闭包或lambda函数。有时,您可能希望功能一次使用。Closure是一个匿名函数,它在定义它的环境中关闭。您需要在其中指定use关键字。匿名函数的最常见用法是创建内联回调函数。
$var=function ($arg1, $arg2) { return $val; };
在function关键字和左括号之间没有函数名称。
函数定义后面有分号,因为匿名函数定义是表达式
函数被分配给变量,然后使用变量名称进行调用。
当传递给另一个可以在以后调用的函数时,称为回调。
从外部函数中返回它,以便它可以访问外部函数的变量。这称为闭包。
<?php $var = function ($x) {return pow($x,3);}; echo "cube of 3 = " . $var(3); ?>
输出结果
这将产生以下结果。-
cube of 3 = 27
在下面的示例中,匿名函数用作内置usort()
函数的参数。该usort()
函数使用比较函数对给定数组进行排序
<?php $arr = [10,3,70,21,54]; usort ($arr, function ($x , $y) { return $x > $y; }); foreach ($arr as $x){ echo $x . "\n"; } ?>
输出结果
这将产生以下结果。-
3 10 21 54 70
闭包也是一个匿名函数,可以在use关键字的帮助下访问其范围之外的变量
<?php $maxmarks=300; $percent=function ($marks) use ($maxmarks) {return $marks*100/$maxmarks;}; echo "marks=285 percentage=". $percent(285); ?>
输出结果
这将产生以下结果。-
marks=285 percentage=95
问题内容: 是否可以具有递归和匿名的PHP函数?这是我尝试使其工作,但未传入函数名称。 我还知道这是实现阶乘的一种不好方法,这只是一个例子。 问题答案: 为了使其正常工作,您需要传递$ factorial作为参考
php版本: 5.4 我定义了一个这样的函数 输出是 如何在的正文中引用。
问题内容: 我在玩PHP中的匿名函数,并意识到它们似乎并没有到达它们之外的变量。有什么办法可以解决这个问题? 例: 这将输出“无”。匿名函数有什么方法可以访问? 问题答案: 是的,使用闭包: 请注意,为了使您能够在匿名函数范围之外修改和检索修改后的值,必须在闭包中使用对其进行引用。
我在PHP中使用匿名函数,发现它们似乎无法访问外部变量。有什么办法可以绕过这个问题吗? 示例: 这将输出“nothing”。匿名函数有没有办法访问变量?
5.6. 匿名函数 拥有函数名的函数只能在包级语法块中被声明,通过函数字面量(function literal),我们可绕过这一限制,在任何表达式中表示一个函数值。函数字面量的语法和函数声明相似,区别在于func关键字后没有函数名。函数值字面量是一种表达式,它的值被成为匿名函数(anonymous function)。 函数字面量允许我们在使用函数时,再定义它。通过这种技巧,我们可以改写之前对st
有没有想过定义一个很短的回调函数,但又不想用 def 的形式去写一个那么长的函数,那么有没有快捷方式呢? 答案是有的。 python 使用 lambda 来创建匿名函数,也就是不再使用 def 语句这样标准的形式定义一个函数。 匿名函数主要有以下特点: lambda 只是一个表达式,函数体比 def 简单很多。 lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封