(五)变量作用域
通常说的作用域,有2种
局部作用域:只能在所定义的函数范围内使用
全局作用域:在函数的“外部”范围使用
Php中,局部和全局作用域不重叠,即局部不能使用全局的变量,全局不能使用局部的变量(内部与外部的变量名可以重复,互不影响)
Js中,全局变量包括局部作用域
但还有两种:
超全局:函数内外都可以使用(只有系统内部预定义的几个,不能自己创建)
静态局部作用域(static):也是局部,数据能够在函数退出后仍然保持不丢失。
局部访问全局的特定语法
1.在局部范围内,使用global关键字对全局变量进行一次声明,就可以使用了
语法:global $变量名;
实际上,函数中的global语句,创建了一个与外部变量同名的局部变量,并通过“引用”的方式指向外部变量的数据区
2.在函数中,使用$GLOBALS超全局数组来引用全局变量
用$GLOBALS超全局数组作用:用于存储所有全局变量的数据:变量名为下标,变量值为对应元素值
示例:在函数中写:$v1=$GLOBALS[‘v1’];就可调用全局变量v1
使用$GLOBALS操作全局变量,是直接操作,不是引用操作,如果unset该对应元素,则全局变量也被unset
3.使用$GLOBALS创建一个新的元素,可以创建全局变量。如: $GLOBALS[‘v2’]=10;
全局访问局部的特定语法
1.通过引用传递的方式向形参传递一个引用实参变量(函数的引用传递)
2.使用函数的引用返回形式(引用传递方式返回数据)
3.函数中使用global关键字来首次引用一个全局变量,则函数结束后在全局范围内可以使用该变量
(六)有关函数的系统函数
function_exists();//判断某个函数是否被定义过,返回布尔值
示例:if(function_exists(“func1”)==false){
function func1(){}
}
func_get_args();//获得一个函数所接收到的所有实参数据,结果是一个数组
func_get_arg(n);//获得一个函数所接收到的第n个实参数据(n从0开始)
func_num_args();//获得一个函数所接收到的所有实参数据的个数
(七)函数相关编程思想
递归思想(递归函数):在一个函数中,有至少一条语句,又会去调用该函数自身
要有递归函数的出口,即停止调用
总结:为了解决一个大问题,根据现实逻辑,该问题可以通过比它小一级的同类问题的答案而“轻松得到”。小一级的问题又可通过更小一级的问题而轻松得到,依次类推—直到最小问题,通常就是一个已知数(答案)。(由大到小,再到大)
举例:求某个数的阶乘
递推思想(迭代思想):由小到大(推荐使用,效率比递归要高)
举例:求斐波那契数列(某项的值是前两项的值的和)的第n项的值
(八)常用内部函数
字符串函数
时间函数