牛骨文教育服务平台(让学习变的简单)
博文笔记

带你学习世界上最好的语言PHP(七)

创建时间:2018-01-05 投稿人: 牛骨文返利机器人 浏览次数:314

函数初步

函数可以分成系统函数和用户自定义函数!

函数定义

带你学习世界上最好的语言PHP(七)

所以,函数由函数名,参数列表和函数体(完成特定功能的一组代码)三部分构成!

函数调用

定义函数的目的就是在适当的时候可以拿来调用,可以多次调用!

使用函数调用操作符来调用,就是一对小括号()

如果函数有返回值,可以把该返回值赋给一个变量!

带你学习世界上最好的语言PHP(七)

注意:函数必须先声明,后调用!但是,在写代码的时候,可以先调用后声明,因为,脚本在执行之前经过了一次预编译

带你学习世界上最好的语言PHP(七)

注意:如果函数的定义是出现在一个被载入的文件内,则该文件一定要先载入,因为文件的载入是发生在代码的执行阶段,而不是在预编译阶段!

带你学习世界上最好的语言PHP(七)

带你学习世界上最好的语言PHP(七)

函数名

命名规则遵守基本的标识符的规则,但是不区分大小写(和变量名不一样),一般用小驼峰法来表示(后面的类名也不区分大小写,而类名一般用大驼峰法),并且,函数名不能重名,所以不能使用系统函数的函数名!

可变函数

可变函数的意思就是,函数名可以用一个变量名来代替!

可变函数常用于一组功能类似,但是函数名又不完全一致的情况:

比如:学习PHP处理图片的时候,需要利用图片创建一个画布,但是,创建画布的函数,会随着当前的图片的格式的不同而使用的函数!

带你学习世界上最好的语言PHP(七)

匿名函数

PHP允许定义一个没有名字的函数,称之为匿名函数,在定义的时候,只需要省略掉函数的名字即可!

此时,函数应该作为一个值的形式,保存到一个变量内!

带你学习世界上最好的语言PHP(七)

调用匿名函数的形式:变量名(参数列表)

带你学习世界上最好的语言PHP(七)

带你学习世界上最好的语言PHP(七)

此时,这个匿名函数其实是一个对象类型的数据!

匿名函数由于是Closure类的一个实例,而Closure就是闭包的意思,所以匿名函数也叫作闭包函数!

函数的参数

思考:函数为什么要有参数?

函数是相对独立的代码区,但不是绝对的独立,也就是说,函数对外应该需要一个或多个接口以实现相关数据的传递,这个接口一般都是用参数来实现的!

形参和实参:形式参数parameter

形参,是在定义函数的时候规定好的,这里的参数只是一个形式,默认的是没有值的,只是说明此处需要使用一个数据来代替,当前,定义函数的时候也可以没有形参

实际参数argument

实参,在调用函数的时候需要把实际的值传递给该函数(其实就是传递给了形参),这个时候,形参才有真正的数据!

带你学习世界上最好的语言PHP(七)

思考:实参能不能使用一个变量来充当?

带你学习世界上最好的语言PHP(七)

答案是可以的,那么在调用的时候,就变成了实参变量给形参变量赋值的一种情况?

此时,就出现了变量之间的传值了,所以就分成了值传值和引用传递!

参数的值传递:默认的就是值传递,在函数内,如果修改形参变量的值,不会影响到实参变量!

带你学习世界上最好的语言PHP(七)

参数的引用传递也就是将实参的值地址传递给形参变量!

思考:求地址运算符应该放在实参的前面还是形参的前面?

带你学习世界上最好的语言PHP(七)

带你学习世界上最好的语言PHP(七)

注意:

1,如果要使用引用传递,就应该在定义函数的时候,就规定好,也就是在形参的前面加上求地址运算符&,意思是此参数应该是引用传递!

2,引用传递只有在变量与变量之间才有效,所以,在参数进行引用传递的时候,实参只能是变量!

带你学习世界上最好的语言PHP(七)

参数的默认值

常规的,形参的值应该来源于实参的传递,但是,如果某些参数的值有比较常用的情况,可以为该形参设置一个默认值:

带你学习世界上最好的语言PHP(七)

总结:

1,函数在调用的时候,如果传递了相应的实参,那么该形参的值就是使用实参的值,如果没有传递实参,就使用该形参的默认值

2,如果一个函数中的有些参数存在默认值,应该将该参数放在整个参数列表的最后面!

带你学习世界上最好的语言PHP(七)

参数的数量问题:一般来说,实参和形参的数量应该一样,也就是一一对应

实参多于形参可以正常的运行,所有的形参按实参的顺序依次获得即可!多余的直接舍弃掉了!

带你学习世界上最好的语言PHP(七)

实参少于形参

只有一种正常的情况,就是形参列表最后有默认值的形参可以不用赋值!

除此之外,一般会报告一个警告级别的错误,但是,脚本会继续运行,只是此时只有部分形参可以获得数据,没有赋值成功的形参,相当于没有该形参变量!

不定参数的函数

思考:假如需要用户自己定义一个类似于下面系统函数max的功能,函数的参数应该如何定义?

带你学习世界上最好的语言PHP(七)

此时,无论定义多少个都不合适,干脆一个都不定义!但是,此时我们必须要考虑如何才能获得当前的实际参数的值!是利用一个系统函数来实现的:

func_get_args():该函数的作用就是可以获得当前函数所接收的所有实际参数的值,并以索引数组的形式保存!

带你学习世界上最好的语言PHP(七)

所以,我们只需要遍历该数组,得到该数组的最大值即可:

带你学习世界上最好的语言PHP(七)

另外的几个函数:func_get_arg()获取某个参数的值,使用参数的索引位置来表示,从0开始,比如func_get_arg(3)得到的就是第四个实参的值!

带你学习世界上最好的语言PHP(七)

func_num_args()获得参数的数量

带你学习世界上最好的语言PHP(七)

函数体

就是可执行代码的集合,以完成特定的功能!每个函数的函数体都各不相同!

其中一条return语句比较重要!

return语句

作用:

1,将函数的返回结果,返回给调用该函数的位置!

2,停止函数的运行

也就是说,当函数一旦执行到return语句,就马上结束整个函数的运行!

思考:

1,函数体内能不能有多个return语句呢?

能,但是只能执行其中的一条!

2,如果一个函数的内部确实有很多值需要返回,怎么办?

应该先把这些需要返回的数据放到一个数组变量中,然后返回这个数组就行了

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。