① php没有函数名的函数什么时候需要用到呢
没有函数名的函数也就是匿名函数,通常在定义后就立即使用,比如当某个函数要求参数也是函数时,就可以用一个匿名函数传递进去,然后那个函数就会立刻调用它了,比如//这段代码用于过滤数组,筛选数组中的所有偶数:
$a1=array(1,2,3,4,5,6,7,8,9);
$a2=array_filter($a1,function($v){
return$v%2==0;
});
print_r($a2);
也可以把匿名函数赋值给一个变量,以后调用这个变量就相当于执行了这个函数:
$f=function($x,$y){
return$x+$y;
};
echo$f(1,2);
② 匿名函数的好处
匿名函数出现在 matlab 中。它是matlab中定义的一种函数形式。
匿名函数的作用(好处):匿名函数的作用:主要实现自己定义matlab中的函数,从而扩大函数的使用功能。
函数简介:匿名函数不以文件形式驻留在文件夹上;他的生成方式最简捷,可在指令窗或任何函数体内通过指令直接生成。
和内联函数(inline)相比,匿名函数的优越性在于可以直接使用workspace中的变量,不必申明,非常适合嵌入到M文件中。
%例10-25 匿名函数举例。
%本例列举3个匿名函数的例子,分别有0个、1个和两个输入参数。
%首先介绍没有输入参数的匿名函数,只需用空格代替arglist即可。例如,编写求解当前时间的匿名函数如下所示。
>> t = @() datestr(now);
t() %函数的调用
ans =
14-Sep-2004 20:22:50
%值得注意的是,调用该函数时,括号不能省略,否则, MATLAB 7.1将对程序不予计算,如下所示。
>> t
t =
@() datestr(now)
>>
%再介绍有一个输入参数的匿名函数,该函数用于求所输入参数的平方,编制并运行程序如下所示。
>> sqr = @(x) x.^2
sqr =
@(x) x.^2
>> sqr(12)
ans =
144
>>
%最后介绍有两个输入参数的匿名函数,用户可以由此推导有多个参数的匿名函数,编制并运行程序如下所示。
>> sumAxBy = @(x, y) (14*x + 41*y)
sumAxBy =
@(x, y) (14*x + 41*y)
>> sumAxBy(3,7)
ans =
329
>>
注意这些定义过程,其中@这个标志符是很重要的。
③ 什么是lambda表达式
lambda表达式,也可称为closure(闭包),通常是在需要一个函数,但又不想费神去命名一个函数的场合下使用,也就是指匿名函数。由于其几乎被所有主流开发语言支持。
是java8新引入的一种语法,是一种紧凑的传递代码的方式。
使用lambda表达式可以使代码变的更加简洁紧凑。
lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
以下是lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
PHP 5.3
PHP5.3增加了Lambda的支持,对于接受回调函数的PHP函数来说,lambda表达式非常方便。比如使用array_map函数遍历数组,并将回调结果重新赋值给数字各元素。
Javascript
javascript中的lambda表达式通常称为匿名函数,如果你使用过jquery库,那么你肯定知道匿名函数,这里主要作为回调函数使用。
④ PHP的几种函数参数类型及一些特殊函数
给你整理如下:
默认参数:在函数声明时给参数赋值,而且此默认参数只能在最后,调用时可不传递任何参数(若只有默认参数的情况下)
可变参数:一个函数可能需要可个可变数目的参数。在php中,提供了三个函数用于检索函数中所传递的参数。func_get_args()返回一个提供提供给函数的所有参数的数组;func_num_args()返回提供给函数的参数数目;func_get_arg()返回一个来自参数的特定参数。具体如下:
$array = func_get_args();
$count = func_num_args();
$value = func_get_arg();
遗漏参数:当调用函数时,可以传递任意个参数给函数。当函数必要的参数没有i被传递时,此参数值是空,并且PHP会为每个遗漏的参数发出警告
可变函数:使用可变变量,可以基于变量的值调用函数
匿名函数:又叫闭包函数,允许临时建立一个没有指定名称的函数,最经常用作回调函数参数的值。需要注意的是,在匿名函数内的变量的用法不同于全局变量,在匿名函数内的变量是一个闭包变量,另外,被调用闭包的作用域不必是相同的。
⑤ php匿名函数
$显然是变量,你这里是把匿名函数,把函数赋值给变量,$greet表示一个函数,但不是函数名。匿名函数多用于临时创建的简易函数。
⑥ php函数function中return问题:
return 是要返回函数调用后的结果, 就是比如 $a = fun(); 如果fun()里有值就可以把这个函数赋值给一个变量,如果没有return 就不能赋值给变量。
function 里的 $a 和外面的$a不是一个值, function里的是局部变量,只在function里起作用。如果你直接echo $a 而没有写 $a=_pr(6,9); 是会报错的。你也可以写成$b = _pr(6,9);得到的值也是一样