函数:
指的是,具有某种功能的代码的集合。需要这个功能时,我们去执行(调用)相应的函数即可。
结构化编程,将功能都封装成一个个独立的结构。
抽象编程。
每次使用功能时,定义功能 。 转成 现将功能 制作成工具,然用时,使用工具就可以了。
函数必须先定义再使用。按照函数的定义者分成:系统函数和用户函数。
函数的基本语法:
定义函数的语法:
Function 函数名(参数) {
函数体
}
调用函数的语法:
函数名(传递到函数的参数).
函数的基本组成部分:
函数名 函数的标志
参数 函数执行时的一些数据参考
函数体(实现函数功能的代码块)
函数的返回值 (函数的执行结果,一个反馈信息)
定义:
调用:
其中的函数名部分,规则参考变量名命名规则即可,但是函数名不区分大小写。
但是注意 建议 怎么定义 怎么调用。
函数的参数部分:
形式参数:函数在定义是所使用的参数,就叫做形式参数。形式参数是没有具体值的。只有在调用时,才会被赋予某个值。简称 形参。
实际参数:函数在被调用时,会按照形式参数的规则,传递进来有实际意义的参数。此时就称之为实际参数,简称实参。
通常情况下,形式参数在函数别调用时,都是一值传递的方式,来获得实际参数的值。
与值传递相对,还有引用传递。
如果需要参数引用传递,需要在定义时,在形参前,增加引用符号 &.
此时 当调用 max3时:
当我们在函数体内修改 变量 x,y,z的值时,此时会对a,b,c产生不同的影响:
如果是参数占用很多资源, 为了提高效率,我们采用值还是引用? 引用。
并不是要求所以的参数都是或者不是某种传递方式,可以在参数上单独设置。
参数的默认值:
我们可以在定义函数时,为函数的参数,设置默认值。这样 当我们调用函数时,如果没有为这个参数传递数据,则使用默认值来代替。
函数的返回值:
函数是使用return语句标志返回值。
通常要求每个函数都有返回值,但是语法上 还是可以没有返回值。
当函数执行到 return语句时,函数运行结束。意味着 return语句后的所有函数体,都不需要再执行了。
一个函数可以有几个返回值?一个。
可以有几个return语句?多个。
一个函数通常只能有一个返回值,那么如果一个函数的功能要求 能够返回两个数据应该怎么办?怎么才能让一个函数同时影响两个值?
将两个值 给包装成一个集合类型的数据。
利用参数的引用传递,
Php的很多函数都是采用的引用传递达到 一个函数处理多个返回值的目的:
提示:如果参数是引用传递,则在调用时,必须是传递一个变量才可以。因为只有变量才能引用传递。
作用域问题:
变量的作用域,因为有函数 才会有作用域的划分。
当变量被定义后,在哪些代码中可以被使用。
某个变量是一定属于哪个作用域的。大家需要知道 php有哪些作用域:
全局作用域。 函数外属于全局作用域。在全局作用域定义的变量,在全局作用域内可见。
局部作用域。 函数内,就是某个函数形成局部作用域。在局部作用域内定义的变量是在局部可见的。
超级全局: 既可以在函数内,也可以在函数外。
在局部作用域 访问 全局作用域变量。需要使用关键字global,在某个局部作用域内,声明某个变量是全局的。
除了使用global关键字外,还可用如下的方法:
Php会将所有的定义的全局变量,都放入到一个数组中。这个数组是$GLOBALS(超级全局)。
其中 GLOBALS的每一个元素,就是一个全局变量,元素的下标,就是全局变量名,元素的值,就是变量值。
局部作用域 是在函数被调用时,才产生的。
同样 在函数 运行结束时,函数所产生的作用域随之消失,作用域内的所有变量应该消失。
全局作用域 是在php脚本运行时 就会产生。
在脚本运行结束时消失。全局作用域内的变量也应该消失。
在php内,支持局部作用域的静态变量。作用域也属于某个局部作用域。但是由于他是静态的,导致,在函数运行结束后,这个静态变量是不会消失,会保持住原来的处理好的值。
静态局部变量,只在当前函数的作用域内才生效。
简单小结一下:
普通全局: 函数外
普通局部: 函数内
超全局: 所有地方
静态局部: 当前函数内,函数运行结束不消失。可以在下次调用时再使用。
在局部使用全局: global $GLOBALS[]
作业
参数的引用传递的作用?
完成杨辉三角:
第一列和对角线上的都是1,
除此之外,值为 = 头顶上的值+左肩上的值。
1
11
121
1331
14641
15101051
1615201561
定义成一个函数
Yanghui(7); 参数为行数。
Tip:利用双重循环 和 数组的操作可以完成
打印星星
要求定义一个函数 xingxing(4);