函数的参数类型并演示,匿名函数、回调函数及

编辑: admin 分类: 电脑知识 发布时间: 2023-06-14 来源:互联网
函数的参数

参数类型可以是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的意义不同。

【本文由:防ddos攻击 http://www.558idc.com/gfcdn.html提供,感恩】