批改状态:合格
老师批语:昨晚讲解了call_user_func()回调对象函数,可以补充进去了
1.调用函数时不传递标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中。
2.PHP回调是指在主线函数执行过程中,先跳去执行作为参数的回调函数,回调函数执行结束后,再继续执行主线函数。
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)
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)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号