一、基本自定义函数语法
语法:function函数名(参数列表){函数体}。必须使用funtion声明。用return返回执行结果。
函数的参数分:行参,实参。
行参:在参数列表内的就叫行参。
实参:函数体内的,调用的方法实际参数就叫实参。
行参跟实参要一一对应,其中行参必须有,实参配合行参。在参数列表、函数体内创建的函数不能再外部使用,使用就报错。
二、自定义函数的默认值
形参有默认值,sum(20,10),实参就不用再传,我们传入两个值,两个值顺序一一对应。
自定义函数和函数不受代码上下顺序控制。
三、函数不固定参数的数量
func_num_args:获取实参的数量
func_get_args:获取实参的值(数组)
下图是参数累加…$a为点语法,代表123456789,可以代替 func_get_args.
在写自定义函数方法时:
1、名字要根据功能起。2、参数有多少个要写出来。3、参数的类型要写出来。4、返回值要写出来。
四、函数的返回值
可以返回整数、字符串等类型,如果要返回多个数值,就返回数组。
自定义函数可以限制返回值:
function函数名(参数列表):类型{函数体}
类型:
int整数
string字符串
float浮点数
array数组
object对象
如果函数不限定类型的话,就会直接强制转换类型。
五、函数中的变量访问
在函数中不能直接访问外部变量,通过globals声明变量可以访问外部变量。globals的解释就是超全局变量。
下图$name=’天才’;是变量。
变量创建后会存在$GLOBALS中,会把变量名作为下标。
常量可以调用,但设置就不会更改,define是设置常量。
六、匿名函数与闭包
匿名函数也叫闭包函数,允许创建一个没有指定名称的函数,也经常用作回调函数(callback)参数的值。
匿名函数赋值给$sum,作为变量结尾是要有};结束符的。这个变量$a跟$b是没有值的,返回值$a+$b是变量,所以最后调用$sun(10,20),得到结果30.
闭包可以拿来排序,计算机拿每次拿两组数字来对比,调整位置最后排序。其中变量第二个参数只看true和false。
其中有太空舱操作符:<=>,可以判定大小,也可以实现排序功能。
闭包函数是不允许调用外部变量的,use是全局变量,所以通过use调用外部变量$name=’天才’;
use()它的作用是把()里的变量和外部的变量连在一起。
由上图可以看出我们将实参$v里面的age加了1,但是我们打印出来的数组却没有变化,是因为$v定位的是整个数组$arr,我们特别指定$age加1,就要在行参里面进行定位foreach ($arr as $f=>$v),我们用&起址符就可以直接在foreach ($arr as &$v)里面定位输出。
总结:
在进行自定义函数作业的时候,其实是越做越晕的,然后这份作业其实应该花了起码8个小时吧,各种循环数组基础知识没打稳,其他的知识其实就很难深入理解,经过2天的操作测试,现在自定义函数啊,闭包啊,感觉是差不多了,可能明天又会全忘掉,前面的其他内容要再复习,我把电脑上的时间显示给关了,忘了时间我发现更容易聚精会神。老师讲课的时候其实可以只管自己讲,你讲课的时候我们都聚精会神的听得,你讲群里面的东西,我的注意力就会被散开,再进入那个状态就会很难得,尽量不要讲时间还剩多少,因为我发现最后十几分钟讲的最多,但是每次的最后十几分钟其实都没听进去。