PHP中的函数看上去很简单,实际上功能非常强大,我这里按函数名称是否固定,可以分为以下三大类:
一、名称固定的函数:
这类函数,也叫:常规函数,直接用关键字function来创建,也是大家最熟悉的类型,例如:
<?php //1按名调用:最直接和普通的方式 echo '1.用function关键字创建常规函数,按函数名称调用:<br>'; function add($a, $b){ return $a.'+'.$b.'='.($a+$b); }; echo add(5,6); echo '<hr>';
执行返回:
1.用function关键字创建常规函数,按函数名称调用:
5+6=11
二、名称动态设置的函数:
这类函数有很多种称呼,例如:匿名函数、可变函数、变量函数、闭包函数等,其实都一样的,大家别被名称吓住了。
这种动态设置的函数,是用引用这个函数的变量名来调用,所以非常适合放在回调函数中使用~~
为了教学需要,我这里统称为:匿名函数吧。
匿名函数的创建主要有二种方法,有的教材分开来说了,我这也分开吧。
1、创建方法一:用PHP内置的create_function(参数表,函数体)函数完成,这个函数有二个参数,这二参数必须放在引号中,别问为什么,PHP就是这样规定的,如果不服,那你创造出一个编程语言吧~~
<?php //2.用系统函数create_function()来创建一个匿名函数/可变函数/变量函数/闭包函数 echo '2.用内置create_function()函数创建匿名函数,用变量名调用:<br>'; $func1 = create_function('$a,$b','return $a.\'+\'.$b.\'=\'.($a+$b);'); echo $func1(5,6); echo '<hr>';
执行返回:
2.用内置create_function()函数创建匿名函数,用变量名调用:
5+6=11
2、创建方法二:用function关键字来创建,创建过程与常规函数一样,不同之处在于,它出现在值的位置上,也就是'='等号的右边。将创建好的函数整体赋给一个变量;
<?php //3匿名函数:也叫闭包函数,将函数做为值赋给一个变量 echo '3.用function关键字创建匿名函数,用变量名调用:<br>'; $func2 = function ($a, $b){ return $a.'+'.$b.'='.($a+$b); }; echo $func2(5,6); echo '<hr>';
执行返回:
3.用function关键字创建匿名函数,用变量名调用:
5+6=11
三、没有函数名称,创建完直接传参调用执行:
这类函数,它也匿名函数很像,但更加的粗暴,创建好直接用括号一包,传上参数就可以调用了,所以这类函数根本不需要名字,属于一次性的函数。就像一次用品,用完就扔掉了。
<?php//4自执行函数:创建完立即执行不必明示调用echo '4.用function关键字创建匿名函数,然后直接传参调用执行:<br>';//自运行的匿名函数echo (function ($a,$b){return $a.'+'.$b.'='.($a+$b);})(5,6);
执行返回:
4.用function关键字创建匿名函数,然后直接传参调用执行:
5+6=11
总结(非常重要,不得不看):
php中,函数的使用还是非常灵活的,但不论如何,函数,归根到底,还是一个处理过程。同时,也必须要有一个返回值,才能让用户感知它的存在,也及它的价值!
所以,函数总是当做一个值来使用,因此,不能出现在等号'='的左边,这就是函数与语言结构的最大区别。
例如,我们常说:echo()和list()是一个语言结构,不是一个函数,尽管看上去长得与函数一样,就是因为它们可以放在等号的左边,可以接受赋值。而函数不行。希望这篇文章,让你对函数有更深的理解~~
文章来源:http://peter.php.cn/blog/detail/188.html