PHP的函数参数、匿名函数和回调函数
一、函数的参数
- PHP 中函数的定义
- 通过在函数定义时的声明,函数可以由任意数目的参数。
- 传递参数给函数的方式有两种: 按值传递 和 按 引用传递。
/**
- @param integer $a 按值传递
- @param integer $b 按引用传递
- @param integer $c = 3 默认参数*/
function A(int $a, int &$b, int $c = 3) {echo $a."<br/>";echo $b."<br/>";$b += 1;echo $c."<br/>";return $a+$b;}$a = 1;$b = 1;echo A($a,$b)."<br/>";echo $b."<br/>";
//输出://1 输出$a的值是1//1 输出$b的值是1//3 输出$c的默认值是3//3 求A+B两数之和,$b被额外+1,返回值为3//2 由于$b 是传值引用,在add函数内被+1,显示2;
二、匿名函数
- PHP 匿名函数
- 通是没有一个确定函数名的函数,在PHP中也叫作闭包函数。它的用法,只能被当作变量来使用了。
- 函数名即使是变量名。
$result=function(int $a,int $b){return $a+$b;};echo $result(1,3)."<br/>";
//输出://4
- 匿名函数使用函数外全局变量
- 也可以使用引用参数,会修改全局变量值
$total=function(int $d)use($a,$b):string{return $d+$a+$b;};echo $total(3);
//输出://6 $a,$b为全局变量,进过A函数运算,为1和2
三、回调函数
*函数作为参数传入进另一个函数中使用;PHP中有许多 “需求参数为函数” 的函数,像array_map,usort,call_user_func_array之类,他们执行传入的函数,然后直接将结果返回主函数
//求0-100之内的偶数data = range(0, 100);$arr = array_map(function(int $item){if($item % 2 === 0)return $item;}, $data);$res = array_filter($arr, function($item){return $item;});//过滤值$res = array_values($res);//重新排序数组printf('<pre>%s</ pre>', print_r($res,true));
//输出:// [2] => 2// [4] => 4// …//[100] => 100