Blogger Information
Blog 70
fans 4
comment 5
visits 104858
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:回调函数/递归函数/数组函数/二维数组里的键值name换成user ,生成一个由1-100组成的数组,返回该数组中的偶数组成的新数组,并且新数组的索引从0开始
JiaJieChen
Original
1211 people have browsed it

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);
Correcting teacher:灭绝师太灭绝师太

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