批改状态:合格
老师批语:关于回调函数, 知道他们的用途, 如果想得到一个新数组,用array_map(), 如果只是对原数组进行格式化,用array_walk(), 如果想过滤掉数组中的某些数据, 用array_filter(), 但是实际中, 却同一个功能有多个数组可用的
<?php//1.array_chunk(需要分割的数组,分割后每个数组的元素个数)数组分割函数$courseArr = [89,90,78,67];$courseGrade =array_chunk($courseArr,2) ;//返回多个数组printf('<pre>%s</pre>',print_r($courseGrade,true));//2.array_column(需要处理的数组,需要返回的键名)返回数组中指定一列的值,返回值是一个数组$grade = [['name' => 'angle','chinese' => 98,'math' => 87,'english' => 76],['name' => 'Eric','chinese' => 98,'math' => 87,'english' => 74],['name' => 'hugn','chinese' => 94,'math' => 77,'english' => 86],['name' => 'peter','chinese' => 98,'math' => 57,'english' => 76],['name' => 'Lucy','chinese' => 92,'math' => 87,'english' => 66],];// printf('<pre>%s</pre>',print_r($grade,true));$chineseGrade = array_column($grade,'chinese');//返回所有同学的语文成绩printf('<pre>%s</pre>',print_r($chineseGrade,true));//3.array_key_exists(要查找的键名,要查找的数组)检查数组中是否存在指定的键名$StuGrade = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 76];if (array_key_exists('php',$StuGrade)):echo $StuGrade['name'],'php成绩为:',$StuGrade['php'];else:echo $StuGrade['name'],'不存在php成绩';endif;//4.array_diff()返回两个数组的差集$fruitArr1 = ['apple','pear','banana','Strawberry','peach'];$fruitArr2 = ['apple','pear','peach'];$fruitArr = array_diff($fruitArr1,$fruitArr2);//返回在第一个数组,但是不在第二个数组中的数据返回'banana','Strawberry'printf('<pre>%s</pre>',print_r($fruitArr,true));//5.array_diff_key()根据键名计算差集$stu1 = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 76];$stu2 = ['name' => 'Eric','chinese' => 98];$stu = array_diff_key($stu1,$stu2);//返回'math' => 87,'english' => 76printf('<pre>%s</pre>',print_r($stu,true));//6.array_fill_keys()使用指定的键和值来填充数组$keyStr = ['chinese','math','english','php','mysql','html'];$valueStr = 0;$stuGrade = array_fill_keys($keyStr,$valueStr);//用指定的值填充指定键名,如果值也是一个数组,则返回一个二维数组printf('<pre>%s</pre>',print_r($stuGrade,true));//7.array_intersect 返回两个数组的交集$fruitArr1 = ['apple','pear','banana','Strawberry','peach'];$fruitArr2 = ['apple','pear','peach'];$fruitArr = array_intersect($fruitArr1,$fruitArr2);//返回在第一个数组,但是不在第二个数组中的数据返回'apple','pear','peach'printf('<pre>%s</pre>',print_r($fruitArr,true));//8.array_intersect_assoc() 返回两个数组的交集,键名也比较$stu1 = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 98];$stu2 = ['name' => 'Eric','chinese' => 98];$stu = array_intersect_assoc($stu1,$stu2);//返回'chinese' => 98键和值都相等才可以printf('<pre>%s</pre>',print_r($stu,true));//9.array_merge 合并多个数组$stu1 = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 98];$stu2 = ['name' => 'Eric','chinese' => 87];$stu = array_merge($stu1,$stu2);//合并数组,如果键名相同,则该键名对应的是最后一个数组中的值printf('<pre>%s</pre>',print_r($stu,true));//10.array_rand()随机返回数组中的一个或多个键名$fruitArr1 = ['apple','pear','banana','Strawberry','peach'];$fruitArr = array_rand($fruitArr1,3);//随机返回数组中的3个键级成一个数组//根据这个随机键名可以访问到该数组的随机值echo $fruitArr1[$fruitArr[0]],'<br>',$fruitArr1[$fruitArr[1]],'<br>',$fruitArr1[$fruitArr[2]],'<br>';//11.array_slice()函数 在数组中取出指定位置的数组元素$stu1 = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 76];$stu = array_slice($stu1,1,3);//返回数组中从第二个开始的3个数组元素'chinese' => 98,'math' => 87,'english' => 76printf('<pre>%s</pre>',print_r($stu,true));//12.array_splice()函数 删除并替换指定数组元素的值$stu1 = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 76];$grade = ['chinese' => 88,'math' => 89,'english' => 78];$stu = array_splice($stu1,1,3,$grade);//返回被删除的数组元素,替换数组直接替换原数组的数据,不保留键名printf('<pre>%s</pre>',print_r($stu1,true));//数组元素的回调函数//1.array_filter()过虑数组中的键或键和值$stu1 = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 76];$chiGrade = array_filter($stu1,function($k){//使用回调只返回语文成绩return $k=='chinese';},ARRAY_FILTER_USE_KEY);printf('<pre>%s</pre>',print_r($chiGrade,true));$stu1 = ['name' => 'angle','chinese' => 68,'math' => 87,'english' => 76];$chiGrade = array_filter($stu1,function($v,$k){//使用回调返回语文成绩或者成绩大于80的科目return $k=='chinese' || $v>80;},ARRAY_FILTER_USE_BOTH);printf('<pre>%s</pre>',print_r($chiGrade,true));//1.array_reduce()用回调函数迭代的将数组元素简化为单一的值$arr = [1,2,3,4,5];$sum = array_reduce($arr,function($sum,$item){//第1次调用$sum=100,$item=1 返回101$sum+=$item; //第2次调用$sum=101,$item=2 返回103return $sum; //第3次调用$sum=103,$item=3 返回106},100); //第4次调用$sum=106,$item=4 返回110echo $sum,'<br>'; //第5次调用$sum=110,$item=5 返回115//1.array_map()//用回调函数处理每个数组中的每个元素$arr1 = [1,2,3,4,5];$arr2 = [2,4,6,8,10];$arr3 = [1,3,5,7,9];$arr = array_map(function($v1,$v2,$v3){return $v1+$v2+$v3;},$arr1,$arr2,$arr3);printf('<pre>%s</pre>',print_r($arr,true));//1.array_walk()//可以对数组中的所有值和键做回调$stu1 = ['name' => 'angle','chinese' => 98,'math' => 87,'english' => 76];array_walk($stu1,function($v,$k){echo $k,'=>',$v,'<br>';})?>

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