批改状态:合格
老师批语:
<?php# 匿名函数作为参数$foo = function ($p1, $p2) {return $p1 + $p2;};function f1(Closure $callback){$a = 10;$b = 8;echo "calculating $a + $b = " . $callback($a, $b) . "<hr>";}f1($foo);//calculating 10 + 8 = 18
//1. 系统函数回调一个全局函数function f2(string $sport): string{return "Favourite sport: $sport" . "<br>";}//call_user_func(函数名称,参数列表)echo call_user_func('f2', '?');//call_user_func_array(函数名称,[参数数组])echo call_user_func_array('f2', ['?']);

//2. 回调一个匿名函数$arr = [1, 2, 3];$fooo = function (int $a, int $b, int $c) use ($arr) {array_push($arr, $a, $b, $c);return $arr;};$newArr = call_user_func_array($fooo, [4, 5, 6]);echo '<pre>';print_r($newArr);// Array// (// [0] => 1// [1] => 2// [2] => 3// [3] => 4// [4] => 5// [5] => 6// )
//3. 异步调用对象的方法class Human{public function eat(string $food): string{return "Human eat $food" . '<br>';}public static function drink(string $drinks): string{return "Human drink $drinks" . '<br>';}}echo call_user_func([new Human, 'eat'], '?');echo call_user_func_array('Human::drink', ['☕️']);

以下代码会将toDelete中的文件以及该文件夹依次删除

function delete_dir_files($dir){$status = false;if (is_dir($dir)) {if ($handle = opendir($dir)) {while (($file = readdir($handle)) !== false) {echo $file;if ($file != '.' && $file != '..') {if (is_dir($dir . '\\' . $file)) {delete_dir_files($dir . '\\' . $file);} else {unlink($dir . '\\' . $file);}}}}closedir($handle);if (rmdir($dir)) {$status = true;}}return $status;}$path = __DIR__ . '\\toDelete';echo $path;delete_dir_files($path);
//数组元素的增加 返回数组长度$arr = [10];//1. 头部添加echo array_unshift($arr, 1, 5); //3print_r($arr);//Array ( [0] => 1 [1] => 5 [2] => 10 )//2. 尾部添加 返回数组长度echo array_push($arr, 20, 30); //5print_r($arr);//Array ( [0] => 1 [1] => 5 [2] => 10 [3] => 20 [4] => 30 )
//数组元素的删除//1. 头部删除 返回删除的元素$arr2 = range('a', 'g');echo array_shift($arr2); //aprint_r($arr2);// Array ( [0] => b [1] => c [2] => d [3] => e [4] => f [5] => g )//2. 尾部删除 返回删除的元素echo array_pop($arr2); //gprint_r($arr2);// Array ( [0] => b [1] => c [2] => d [3] => e [4] => f )echo '<br>';//任意位置删除指定数量的数组元素 返回被删除的元素组成的数组$arr3 = range(1, 10);var_dump(array_splice($arr3, 6, 5));//array(4) { [0]=> int(7) [1]=> int(8) [2]=> int(9) [3]=> int(10) }print_r($arr3);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
<?php# 数组键值对相关操作$dinner = ['mon' => 'rice', 'tue' => 'noodles', 'wed' => 'chicken', 'thu' => 'burger', 'fri' => 'bbq'];//获取数组的键,返回键组成的数组$keys = array_keys($dinner);echo '<pre>';print_r($keys);// Array// (// [0] => mon// [1] => tue// [2] => wed// [3] => thu// [4] => fri// )
//检测数组是否有指定的键或者索引var_dump(array_key_exists('sun', $dinner));//bool(false)
//检测数组是否有指定的值 返回指定值对应的键 在if中如果返回的键为0会导致false判断echo array_search('bbq', $dinner);//fri//检测数组是否有指定的值 找到返回true/没找到返回falsevar_dump(in_array('rice', $dinner));//bool(true)
//返回数组中所有的值,并为其建立索引$arr = array_values($dinner);echo '<pre>';print_r($arr);// Array// (// [0] => rice// [1] => noodles// [2] => chicken// [3] => burger// [4] => bbq// )
$dinner = ['mon' => 'rice', 'tue' => 'noodles', 'wed' => 'chicken', 'thu' => 'burger', 'fri' => 'bbq'];//回调一个函数function testArrayWalk(&$arrItem, $key, $drink){$arrItem .= " & $drink";}array_walk($dinner, 'testArrayWalk', 'Coca Cola');echo '<pre>';print_r($dinner);//回调匿名函数array_walk($dinner, function (&$arrItem, $key, $cola) {$arrItem .= "$cola";}, '?');echo '<pre>';print_r($dinner);

$num = array_map(function ($item1, $item2) {$item1 .= $item2;return $item1;}, range(1, 3), range('a', 'c'));echo '<pre>';print_r($num);// Array// (// [0] => 1a// [1] => 2b// [2] => 3c// )
$filtered = array_filter(range(1, 9), function ($item) {return $item % 2 != 0;});echo '<pre>';print_r($filtered);// Array// (// [0] => 1// [2] => 3// [4] => 5// [6] => 7// [8] => 9// )echo '<pre>';print_r(array_values($filtered));// Array// (// [0] => 1// [1] => 3// [2] => 5// [3] => 7// [4] => 9// )
/*** 作业内容:* 1. 如何将以下二维数组里的键值name换成user ,其他保持不变?* $data = [['name'=>'zhangdan','id'=>2],['name'=>'lisi','id'=>1]];*/$data = [['name' => 'zhangdan', 'id' => 2], ['name' => 'lisi', 'id' => 1]];echo '<pre>';print_r($data);array_walk($data, function (&$item, $key) {//decide if the subarray of $data has keys of 'name'if (array_key_exists('name', $item)) ://get the original key array of subarray$keys = array_keys($item);//iterate the key array and replace 'name' with 'user'foreach ($keys as $key => $value) {if ($value === 'name') :$keys[$key] = 'user';endif;}endif;//combine new keys with old values$item = array_combine($keys, $item);});echo '<pre>';print_r($data);

/*** 2. 生成一个由1-100组成的数组,要求返回该数组中的偶数组成的新数组,并且新数组的索引从0开始?*/$filtered_arr = array_filter(range(1, 100), function ($item) {return $item % 2 == 0;});echo '<pre>';print_r(array_values($filtered_arr));

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号