Blogger Information
Blog 38
fans 0
comment 0
visits 22820
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
函数的参数类型并演示,匿名函数、回调函数及对回调函数的理解
一个好人
Original
550 people have browsed it

函数的参数

参数类型可以是int,float,string,array,function等
1、 参数太少 可使用默认参数 (参数从左往右求值)

  1. function sum1(int $a, int $b, int $c = 10): int
  2. {
  3. return array_sum([$a, $b, $c]);
  4. }
  5. echo sum1(10, 20);

2、可以采用命名参数,只支持php8.0以上版本

  1. function sum2(int $a, int $b, int $c = 10, int $d = 20): int
  2. {
  3. return array_sum([$a, $b, $c, $d]);
  4. }
  5. echo sum2(1, 2, d: 3);

3、参数太多 或者不确定参数的个数 在参数前加… 标识为可变参数实现参数聚拢

  1. function foo($arg, ...$args)
  2. {
  3. var_dump($arg, $args);
  4. }
  5. foo(1, 2, 3, 4, 5);
  6. function boo(...$args)
  7. {
  8. return array_sum($args);
  9. }
  10. echo boo(1, 2.3, 3, 4, 5);

引用参数 &
在参数前面加上& 可以将值传递 变为引用传递,两个变量指向同一个内存地址

  1. function hoo(&$a)
  2. {
  3. return $a += 10;
  4. }
  5. $a = 10;
  6. echo hoo($a); //20
  7. echo $a; //20
  8. $x = 100;
  9. $y = $x; //值传递
  10. $x = 200;
  11. echo $y;

// 函数的返回值 函数遇到return 后面的代码会停止执行,也就是多个return只执行第一个。
function fn1()
{
return json_encode([‘code’ => 0, ‘url’ => ‘https: //www.baidu.com’], 320);
return ‘您好’;
}

匿名函数

格式function ($a){},可以把一个匿名函数当做参数传给另一个函数

  1. $b = 10;
  2. $boo = function ($a) use ($b) {
  3. return $a *= $b;
  4. };

传统的调用

  1. echo $boo(2);

func 把第一个参数作为回调函数调用回调匿名函数

  1. echo call_user_func(function ($a) use ($b) {
  2. return $a *= $b;
  3. }, 2);
  4. call_user_func($boo, 2);

命名函数

  1. function boo(...$args)
  2. {
  3. return array_sum($args);
  4. }
  5. echo boo(1, 2.3, 3, 4, 5);

回调一个命名函数
echo call_user_func(‘boo’, …[1, 2.3, 3,]);
echo call_user_func_array(‘boo’, [1, 2.3, 3]); //展开
回调:在主线程执行的过程中,突然跳到预先设置好的函数中去执行的函数
php单线程 同步执行 ,如果遇到耗时的函数会发生阻塞,应该将它改为异步回调来去执行

递归函数:

递归函数 recursion 是指直接或间接地调用函数自身的函数,必须有一个终止处理或计算的准则
function demo($a = 1)
{
if ($a <= 5) {
echo “第{$a}次执行” . PHP_EOL;
$a++;
demo($a);
}
}
demo();
delete_dir_file 删除指定目录
params: 指定需要删除的目录路径
return:返回布尔值 成功true 失败false
谨慎调用 目录会被永久删除 记得备份

总结:

因为异步函数少了await,浪费了好多调试时间;函数部分比较简单,跟老师敲了一遍,有时间再细看吧;匿名函数可以作为变量赋值;在js里朱老师讲回调函数不会释放变量,有些场景可以用来存储变量不会相互污染,比如投票;PHP中不存在变量向内可用的问题,所以应该跟js的意义不同。

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post