回调函数
1.调用函数时不传递标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中。
2.PHP回调是指在主线函数执行过程中,先跳去执行作为参数的回调函数,回调函数执行结束后,再继续执行主线函数。
示例1
function demo($arr,$callback) //主线函数
{
$newArr = $arr; //主线函数获取到参数
$result = $callback($newArr); //主线函数获取到回调函数,因为是函数所以先跳去执行函数,执行结束后获得结果返回
return $result; //主线函数返回由回调函数获得的结果
}
$newPlus = function($newArr) //回调函数
{
$c = array_sum($newArr); //array_sum() 求数组中的值的和
return $c; //返回求和的值
};
var_dump(demo([1,2,3], $newPlus)); //int(6)
示例2
function demo($arr, $callback)
{
$newArr = $arr;
$result = $callback($newArr);
return $result;
}
$num = demo([1,2,3], function($newArr){
$c = array_sum($newArr);
return $c;
});
var_dump($num); //int(6)
异步调用
因为PHP脚本是单线程的,脚本是同步执行的,如果遇到耗时函数会发生线程阻塞,所以要改为异步执行。
全局函数的回调
//1.call_user_func($callback, $parameter) 第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。
$demo = call_user_func(function($newArr){
$c = array_sum($newArr);
return $c;
},[1,2,3]);
var_dump($demo); // int(6)
//1.call_user_func_array($callback, [$parameter]) 第一个参数 callback 是被调用的回调函数,并把一个数组参数作为回调函数的参数
$demo1 = call_user_func_array(function($newArr){
$c = array_sum($newArr);
return $c;
},[[1,2,3]]);
var_dump($demo1); // int(6)
$demo2 = call_user_func_array(function($newArr){
$c = array_sum($newArr);
return $c;
},array([1,2,3]));
var_dump($demo2); // int(6)