php中使用函数变量的关键字,php函数,static,global关键字及三种变量作用域

函数

和js函数类似,关注php与其他语言不用的地方

函数的形参默认值

形式: function f($a,$b=3,$vc = "abc"){

}

注意:没有给默认值的形参必须传递值,

形参的传值问题

一句话:形参的传值问题,其实就是“变量之前的传值问题”,即实参变量传给形参变量,有值传递和引用传递

引用传递(需要在形参前面加&符号而不是实参): function f($a,& $b){

}

函数参数的数量的问题

通常,形参和实参的数量是一致的;

当函数形参有默认值的时候,实参可以进行一定程度的省略(省略只能从右往左省略);

有一种定义和使用函数的特别形式(并不常见)它不定义形参,而实参任意给出,其实系统中也有类似的函数:比如: – 灵活性体现之一

var_dump($v1);

var_dump($v1,$v2,$v3);

我们自己也可以定义这种函数,其实,这种函数,依赖的是以下三个系统函数来获取相应的信息,以得到实参数据的处理:

func_get_args(); // 获取实参数据列表,成为一个数组

func_get_args(i);//获取第i个实参数据,$i从0开始算起

func_num_args(); // 获取实参的数量(个数)

如: // 系统函数func_get_args()可以获取函数调用时传递过来的所有实参数据,并且都放入一个数组中!

function f(){

$arr = func_get_args();

}

函数的返回值:函数的返回值不是语法规定,而是业务所需,需要就返回,不需要则无需返回,返回值一定是通过return 语句!

函数的其他形式:

可变函数:一个变量的名字是一个变量 – > 灵活性体现

可变变量:一个函数的名字是一个变量,其实就是在调用函数的时候,使用一个变量名而已,该变量的内部,就是该函数名! – > 灵活性体现

匿名函数

形式1:将一个匿名函数“赋值”给一个变量,然后通过该变量调用该函数

$f1 = function (){

};

使用:

$f1(); // 调用该匿名函数,和可变函数使用一样的

形式2:直接将匿名函数作为另外一个函数的实参传递进去(因为形参对应的是一个函数)

如:

function f1($a,$b,$sum){

echo "$a =".$a;

echo "$b =".$b;

$result = $sum($a,$b);

echo "result = ".$result;

}

调用:

f1(21,2,function ($a,$b){

returm $a + $b;

});

变量作用域

定义:变量可以使用的范围

php中有三种作用域

局部作用域:在函数内部范围,对应的变量为局部变量

全局作用域:不在函数内部的范围,–函数外部和代码块中的定义的变量是全局变量

超全局作用域:指所有的代码范围,就称为超全局变量,其实只有系统预定义的几个:$_GET,$POST,$_SERVER,$_SESSION,$_REQUEST,$GLOBALS,$_FILES,$_COOKIE..

通常:

全局范围不能访问局部范围;

局部范围不能访问全局范围;

函数内部的变量(局部变量),通常在函数调用执行结束后,就被“销毁”了;

有一种局部变量,在函数调用结束后不会被“销毁”,这种变量就是静态局部变量(用static修饰)。

局部作用域使用(访问)全局变量?(常见需求)

php中不能像其他语言一样直接在局部作用域中访问全局变量,

做法1:而要使用global声明一个要使用的全局变量的同名局部变量

如:

$v = 4;

function f(){

global $v; // 使用global声明一个变量,该变量和全局变量同名,并和全局变量共同指向一个数据区,,相当于复制了引用

}

做法2:通过$GLOBALS预定义变量访问全局变量,如

$v = 1;

function f(){

echo "\$v = ".$GLOBALS['$v']; // 取得全局变量$v的值

$GLOBALS['$v'] = 55; // 改变全局变量$v的值

unset($GLOBALS['$v']); // 释放$v变量,此时全局变量$v就变成null了

}

但,如果我们对$GLOBALS变量的某个单元(下标)进行unset,则其就会完全销毁对应的全局变量,这里不是复制了引用

有关函数的系统函数:

function_exists(函数名) : 判断一个函数是否存在

func_get_args();

func_get_args($index);

func_num_args()。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值