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

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

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

①回调函数

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

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

步回调方法call_user_func_array()

②递归函数

<?php

/**
 * 递归函数   函数自身调用自身,
 * 但必须在调用自身前有条件判断,否则无限无限调用下去。
 */

//声明缓存目录
function delete_dir_file($dir){

    //声明一个初始状态,我们用来检测缓存是否被删除
    $res = false;
    //is_dir 判断目录是否真实存在,如果存在返回true,不存在返回false
    if (is_dir($dir)) {
        
        //opendir 打开目录流,声明一个变量等于这个目录流
        if ($handle = opendir($dir)) {
             
             //readdir 从目录句柄中读取条目,返回目录中下一个文件夹的文件名,文件名在系统文件中的排序方式返回
             //用while循环来一级一级的寻找目录最底层的文件并且删除
             //声明一个变量来保存条目句柄
             while ($file = readdir($handle) !== false ) {
                if ($file != '.' && $file != '..') {
                    
                    //判断是否还有下一个文件夹,如果没有则删除
                    if (is_dir($dir.'\\'.$file)) {
                       delete_dir_file($dir."\\".$file);
                    }else {
                        //unlink只能删除一个文件
                        unlink($dir.'\\'.$file);
                    }
                }
             }
        }

        //closedir关闭目录句柄
        closedir($handle);
        //目录只有为空的情况下才能被直接删除
         //rmdir 删除空目录
         if(rmdir($dir))
         {
             $res = true;
         }
      
    }

    return $res;
}

//判断里面的初始值是否真实为true 
// if ($res) {
//   echo "缓存已删除";
// }

//获取当前文件路径
$_0429_dir = __DIR__;

//把当前文件路径传入函数中
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

<?php
//二维数组里的键值name换成user ,其他保持不变
 $data = [['name'=>'zhangdan','id'=>2],['name'=>'lisi','id'=>1]];


// array_walk 遍历数组
array_walk($data,function(&$item,$key,$value){
   $item[$value] = $item['name'];
    unset($item['name']);
},'user');

echo "<pre>";
print_r($data);

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

<?php
//生成一个由1-100组成的数组,要求返回该数组中的偶数组成的新数组,并且新数组的索引从0开始
//range 生成一个1-100的数组
$arr = range(1,100);
//array_filter 过滤数组
//array_values 返回数组所有值,并且重新赋值数字索引
$res = array_values(array_filter($arr,function($item){
    if ($item %2 != true) {
        return $item ;
    }
}));

echo "<pre>";
print_r($res);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值