10 函数、作用域

函数的一些问题

//稳健进行函数定义的方法,使用function_exists()
if(function_exists("f1") == false){
    function f1(){}
}

php非常多系统函数,有各种各样的作用,取查手册就可以了

参数

定义一个没有形参的函数,其实可以接受任意个数个参数的,并且这些实际参数都会放进一个数组中,可以用 func_get_args() 来获得

1.func_get_args()
2.func_num_args() //获取实参的数量
3.func_get_args($i) //获取第$i个实参,从0开始计数


返回值

return 语句来返回值。注意的是,return后无论跟不跟数据,都会终止函数的运行。

可变函数

和可变变量类似,函数的名字是一个变量

function f1(){
    ....
}
$v1 = "f1";
$v1();    //可以用变量名来调用函数啦


匿名函数

嘛,就是没名字的函数,有两个作用:

1.赋值给一个变量,然后可以像其他函数一样用变量名进行调用
2.作为另一个函数的实际参数进行使用,这样就可以在一个函数内,调用另一个函数了?


作用域

  • 局部作用域:函数内部范围
  • 超全局作用域:所有代码中都能用。只有系统定义的几个而已。$_GET,$_POST,$_REQUEST,$_SERVER,$_COOKIE,$SESSION,$_FILES,$GLOBALS 等等
  • 全局作用域:函数外部

一般全局不能访问局部,局部不能访问全局。

1.全局访问局部

在函数内部将变量定义为静态变量

static $v1 = 12;
//该语句只会执行一次,会令到变量$v1不会被销毁
//可见,静态变量可以用来统计一个函数被调用了多少次
2.局部访问全局(php真搞事情。。。局部居然不能直接访问全局?叫啥全局。。。)
//方法1:
//函数内部使用关键字声明全局变量同名变量
global $v1, $v2;

//方法2:
$GLOBALS['v1']


你可能感兴趣的:(10 函数、作用域)