函数的特性
形参,实参,默认值,强类型参数,可变函数的参数列表,值传递和引用传递。变量的作用域,static静态变量。
形参&实参:在定义的函数中,指定的参数如果没有调用,并不占用内存空间,只有发生调用时,函数的形参才会被分配内存空间,在调用结束后,形参所占用的内存单元是会被释放掉的。
从php7.1开始,如果函数的形参没有默认值,而实参少于形参,那么程序就会被报一个致命的错误,并且终止程序的运行。如果实参大于形参数目,程序依然执行,并且截取和形参相同的数目,并且按顺序赋值给形参。
强类型参数:
declare( strict_types = 1);// 实参必须是函数形参指定的类型,否则则报错
函数可变数量的参数列表:
function ( . . . $nums){
}
函数值传递与引用传递
求阶乘:
function factorial($num){ $ret = 1; for($i = 1;$i<= $num;$i++){ $ret *= $i;//$ret = $i*$ret; } return $ret; }
值传递其实是一种单项传递 只能由实参传递给形参而不能由实参传递给形参。在内存中实参单元与形参单元是不同的单元,在调用函数时,会给形参分配一个内存空间,在调用结束后,形参单元会被释放,实参单元仍然保留,并且维持原来的值。
变量的作用域:
变量范围与生命周期:
局部变量
1 当前页面中声明的普通变量,不能在函数中或类中起作用
2 当前页面中声明的普通变量,不能被传递到其他页面
3 在函数中声明的普通变量,在函数内部有效
4 在类中声明的属性,在类的内部有效
全部变量
对于php而言,在页面中生产的变量都是全局变量,在整个页面都是有效的,但是不能被函数或类中的方法访问
如果想被函数或类中的方法访问,我们就有了超全局变量
php自定义的超全局变量,$_GET,$_POST,$_COOKIE,$_SERVER,$_FILES,$_ENV,$_REQUEST,$_SESSION
静态变量
仅仅在函数局部域中存在,当程序执行完,离开这个域,它的值并没有丢失。