Correcting teacher:灭绝师太
Correction status:qualified
Teacher's comments:
方法 | 含义 |
---|---|
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
多维数组是数组里面的值也是一个数组
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) | 从数组任意位置删除,有返回值 |
系统预定义函数 | 含义 |
---|---|
array_keys(array) | 获取数组中的键,组成新的数组 |
array_key_exists(name,array) | 检查数组里是否有指定的键名或索引 |
array_search(name,array,boler) | 搜索指定的值,返回的是这个值对应的键 |
in_array(name,arr) | 检查数组中是否存在某个值 |
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 数组中。 |
过滤数组,过滤空值或指定的值,不传函数就是过滤空值
<?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);
<?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);