PHP:回调函数/递归函数/数组函数/二维数组里的键值name换成user ,生成一个由1-100组成的数组,返回该数组中的偶数组成的新数组,并且新数组的索引从0开始

2021年05月04日 23:49:36阅读数:157博客 / JiaJieChen / php

PHP:回调函数/递归函数/数组函数/二维数组里的键值name换成user ,生成一个由1-100组成的数组,返回该数组中的偶数组成的新数组,并且新数组的索引从0开始

一.回调函数/异步函数回调方法

  • 回调函数 :将一个用户自定的”执行过程”当做参数传递给到函数中,大大滴增大了对该函数功能的扩展
  • 回调函数: 就是一个被作为参数传递的函数,php回调函数是指在主线程执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后, 再回到主线程处理接下来的流程
方法 含义
call_user_func() 函数名称,参数列表
call_user_func_array() 函数名称,[参数数组]

①回调函数

匿名函数作为回调函数的参数

php单线程,同步执行,如果遇到耗时函数会发生阻塞,应该将它改为异步回调执行,异步回调方法call_user_func()

步回调方法call_user_func_array()

②递归函数

  1. <?php
  2. /**
  3. * 递归函数 函数自身调用自身,
  4. * 但必须在调用自身前有条件判断,否则无限无限调用下去。
  5. */
  6. //声明缓存目录
  7. function delete_dir_file($dir){
  8. //声明一个初始状态,我们用来检测缓存是否被删除
  9. $res = false;
  10. //is_dir 判断目录是否真实存在,如果存在返回true,不存在返回false
  11. if (is_dir($dir)) {
  12. //opendir 打开目录流,声明一个变量等于这个目录流
  13. if ($handle = opendir($dir)) {
  14. //readdir 从目录句柄中读取条目,返回目录中下一个文件夹的文件名,文件名在系统文件中的排序方式返回
  15. //用while循环来一级一级的寻找目录最底层的文件并且删除
  16. //声明一个变量来保存条目句柄
  17. while ($file = readdir($handle) !== false ) {
  18. if ($file != '.' && $file != '..') {
  19. //判断是否还有下一个文件夹,如果没有则删除
  20. if (is_dir($dir.'\\'.$file)) {
  21. delete_dir_file($dir."\\".$file);
  22. }else {
  23. //unlink只能删除一个文件
  24. unlink($dir.'\\'.$file);
  25. }
  26. }
  27. }
  28. }
  29. //closedir关闭目录句柄
  30. closedir($handle);
  31. //目录只有为空的情况下才能被直接删除
  32. //rmdir 删除空目录
  33. if(rmdir($dir))
  34. {
  35. $res = true;
  36. }
  37. }
  38. return $res;
  39. }
  40. //判断里面的初始值是否真实为true
  41. // if ($res) {
  42. // echo "缓存已删除";
  43. // }
  44. //获取当前文件路径
  45. $_0429_dir = __DIR__;
  46. //把当前文件路径传入函数中
  47. delete_dir_file($_0429_dir);

二.数组/数组函数

  • 数组:是一组有序成员(键值对)的集合
  • 索引数组: 索引数组, 键是从0开始递增的正整数
  • 关联数组: 关联数组 键是”语义化” 字符串 如 id email username
  • 多维数组: 多维数组是数组里面的值也是一个数组

    ①索引数组

    索引数组, 键是从0开始递增的正整数

②关联数组

关联数组 键是”语义化” 字符串 如 id email username

③多维数组

多维数组是数组里面的值也是一个数组

foreach 遍历多维数组,获取多维数组里面的name值

④数组函数

系统预定义函数 含义
range(shift,end,X跨越) 快速创建数组
array_unshift(array,name) 从数组头部添加
array_push(array,name) 从数组尾部添加
array_shift(array) 从数组头部删除,有返回值
array_pop(array) 从数组尾部删除,有返回值
array_splice(array,shift,end) 从数组任意位置删除,有返回值

①range()快速创建数组

②array_unshift从数组头部添加

③array_push从数组尾部添加

④array_shift从数组头部删除,有返回值

⑤array_pop从数组尾部删除,有返回值

⑥array_splice从数组任意位置删除,有返回值

⑦数组键值函数

系统预定义函数 含义
array_keys(array) 获取数组中的键,组成新的数组
array_key_exists(name,array) 检查数组里是否有指定的键名或索引
array_search(name,array,boler) 搜索指定的值,返回的是这个值对应的键
in_array(name,arr) 检查数组中是否存在某个值
array_values() 返回数组中所有的值并给其重新建立数字索引
①array_keys()获取数组中的键,组成新的数组

②array_key_exists()检查数组里是否有指定的键名或索引

③array_search()搜索指定的值,返回的是这个值对应的键

④in_array()检查数组中是否存在某个值

⑤array_values返回数组中所有的值,并且重新建立数字索引

⑧常用数组回调函数

数组回调函数 含义
array_walk(arr,callback,userdata) 使用用户自定义函数对数组中的每个元素做回调处理,功时返回 true, 或者在失败时返回 false
array_map(callback,array,arrays) 是为 array 每个元素应用 callback函数之后的数组。 array_map() 返回一个 array,数组内容为 array1 的元素按索引顺序为参数调用 callback 后的结果(有更多数组时,还会传入 arrays 的元素)。 callback 函数形参的数量必须匹配 array_map() 实参中数组的数量。
array_filter(array,callback,mode) 遍历 array 数组中的每个值,并将每个值传递给 callback 回调函数。 如果 callback 回调函数返回 true,则将 array 数组中的当前值返回到结果 array 数组中。
①array_walk()

②array_map()

③array_filter()

过滤数组,过滤空值或指定的值,不传函数就是过滤空值

三.小实战

  1. 二维数组里的键值name换成user ,其他保持不变 $data = [[‘name’=>’zhangdan’,’id’=>2],[‘name’=>’lisi’,’id’=>1]];
  2. 生成一个由1-100组成的数组,要求返回该数组中的偶数组成的新数组,并且新数组的索引从0开始

①二维数组里的键值name换成user

  1. <?php
  2. //二维数组里的键值name换成user ,其他保持不变
  3. $data = [['name'=>'zhangdan','id'=>2],['name'=>'lisi','id'=>1]];
  4. // array_walk 遍历数组
  5. array_walk($data,function(&$item,$key,$value){
  6. $item[$value] = $item['name'];
  7. unset($item['name']);
  8. },'user');
  9. echo "<pre>";
  10. print_r($data);

②生成一个由1-100组成的数组,要求返回该数组中的偶数组成的新数组,并且新数组的索引从0开始

  1. <?php
  2. //生成一个由1-100组成的数组,要求返回该数组中的偶数组成的新数组,并且新数组的索引从0开始
  3. //range 生成一个1-100的数组
  4. $arr = range(1,100);
  5. //array_filter 过滤数组
  6. //array_values 返回数组所有值,并且重新赋值数字索引
  7. $res = array_values(array_filter($arr,function($item){
  8. if ($item %2 != true) {
  9. return $item ;
  10. }
  11. }));
  12. echo "<pre>";
  13. print_r($res);
批改状态:合格

老师批语:

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 博主信息
    JiaJieChen
    博文
    41
    粉丝
    2
    评论
    5
    访问量
    26924
    积分:0
    P豆:84
    博文分类
    php20篇
    HTML+CSS+JavaScript+jQuery+Vue20篇