调用一个函数,即开辟一个空间
1.php可变函数:用于处理兼容问题:函数名部分用变量代替
2.php匿名函数
没有函数名的叫匿名函数
3.引用传递
现在php默认的引用传递的语法如下:
是,在定义函数时,决定哪个参数是值传递,哪个参数是引用传递:如果一个参数是引用传递,在形参前增加一个&符号即可。
4.形参少于实参,
由于形参可以少于实参,一个极端的情况:
在定义函数时,一个形参都不定义。此时在调用函数时,可以任意地传递参数。
在不确定参数的情况,如何获得当前函数所接受到的所有的实际参数:
Php的内置函数func_get_args();
Arg:argument 实参的意思。Parameter,形参
还有相对的 func_num_args()获得所有的参数个数。
Func_get_arg(索引位置);根据索引位置获得某个参数。索引位置从0开始。
5如何在局部访问全局变量
$Globals专门用于将用户数据全局化
优势:
@每个用户的全局变量, 会自动在¥gloabls数组中形成一个元素
@每个GLOBALS元素会自动成为用户的全局变量
@用户的全局变量与¥GLOBALS中的元素是同一个值,哪个更改另一个值也跟着变,删除也一样
Global关键字
在函数内,将一个局部变量声明为全局同名变量的一个引用
php变量生命周期:
静态局部变量:不随函数结束运行而消失,而是只要该函数被调用就会使用这个静态变量,局部(作用哉),静态(生命周期)
只初始化一次,第二次直接使用
匿名函数:没有函数名,可以在一个函数内定义
匿名函数不能先调用在定义,因为定义匿名函数是一个语句,而不是一个结构:
USE:可以将当前匿名函数所在作用域内变量引入声明到匿名函数内部
如果将一个函数,定义在另一个函数内,则所在的就变成了该函数内:
同时支持引用传递
匿名函数不能先调用在定义,因为定义匿名函数是一个语句,而不是一个结构:
匿名函数适用于建立一个临时函数,在有些需要一次性使用该函数的地方可以使用匿名函数
递归调用的两个必要元素:递归点,递归出口
递归点:可以使用递归调用的原因,大问题拆分小问题,解决方案一致
递归出口:递归何时结束。
迭代调用:实现,循环结构即可
如果需要求得第N项,
先求第1项 + 第2项 = 第3项。
再求 第2项+ 第3项 = 第4项。
第3项 + 第4 项 = 第5项。
直到求得到第N项。
1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 | 34 |
前2项 | 前1项 | 2 |
|
|
|
|
|
|
| 前2 项 | 前1项 | 3 |
|
|
|
|
|
|
| 前2 项 | 前1项 | 5 |
|
|
|
<?php
class Test{
public function f($n){
$before_1 = 1;
$before_2 = 1;
for($i=3;$i<=$n;$i++){
$now = $before_1 +$before_2;
$before_2 =$before_1;
$before_1 = $now;
}
return $now
}
}
?>