博主信息
博文 47
粉丝 1
评论 0
访问量 66278
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP 数组函数
晴天
原创
1085人浏览过

1.四个数组会调函数

1.1 array_filter 用回调函数过滤数组中的单元

  • 把输入数组中的每个键值传给回调函数,如果返回 true 则存入另一个数组中,数组键名保持不变
  1. ## array_filter
  2. // 返回数组中后缀名为.jpg 的图片
  3. $image = ['web.png','name.gif','item.jpg','kk.pgf','vv.jpg'];
  4. $image = array_filter($image,function($arr){
  5. return pathinfo($arr)['extension'] === 'jpg';
  6. });
  7. print_r($image);
  8. // 输出 Array ( [2] => item.jpg [4] => vv.jpg )
  9. // 索引进行重排
  10. sort($image);
  11. print_r($image);
  12. // 输出 Array ( [0] => item.jpg [1] => vv.jpg )

1.2 arrtay_map 为数组的每个元素应用回调函数进行处理,返回新数组

  • 该函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
  • 可以传递多个数组,回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
  1. ## array_map
  2. // 将数组进行拉平
  3. $res = [[1,2,3],1,2,(new class{public $name='中国'; public $gps='亚洲';})];
  4. // printf('<pre>%s</pre>',print_r($res,true));
  5. $arr = array_map(function($item){
  6. switch (gettype($item)) {
  7. case 'object':
  8. $item = get_object_vars($item);
  9. case 'array':
  10. $item =implode(',',$item);
  11. }
  12. return $item;
  13. },$res);
  14. printf('<pre>%s</pre>',print_r($arr,true));
  15. // 输出 Array
  16. // (
  17. // [0] => 1,2,3
  18. // [1] => 1
  19. // [2] => 2
  20. // [3] => 中国,亚洲
  21. // )

1.3 array_work 使用用户自定义函数对数组中的每个元素做回调处理

  1. // array_walk()
  2. $res =['id'=>'101','name'=>'machael','age'=>'15'];
  3. array_walk($res,function($item,$key){
  4. echo $key .' = '.$item .'<br>';
  5. });
  6. // 输出
  7. // id = 101
  8. // name = machael
  9. // age = 15

1.4 array_reduce 发送数组中的值到用户自定义函数,并返回一个字符串

  1. ## array_reduce
  2. $arr = null;
  3. $arr[] = ['id'=>'101','name'=>'machael','age'=>'15'];
  4. $arr[] = ['id'=>'102','name'=>'mach','age'=>'16'];
  5. $arr[] = ['id'=>'103','name'=>'maael','age'=>'18'];
  6. // printf('<pre>%s</pre>',print_r($arr,true))
  7. // 获取当期二维数组中每个id的值
  8. $arr = array_reduce($arr,function($res,$item){
  9. return $res.','.$item['id'];
  10. });
  11. printf('<pre>%s</pre>',print_r($arr,true));
  12. //输出结果 ,101,102,103
  13. // 求和
  14. $num = [1,2,3,4];
  15. $sum = array_reduce($num,function($a,$b){
  16. return $a + $b;
  17. });
  18. printf('<pre>%s</pre>',print_r($sum,true));
  19. // 输出结果 10
  20. // 合并两个数组
  21. $a = ['name','id','password'];
  22. $b = ['machiel','101','123456'];
  23. // 合并
  24. $res = array_map(function($arr_a,$arr_b){
  25. return [$arr_a => $arr_b];
  26. },$a,$b);
  27. // 二维转一维
  28. $res = array_reduce($res,function($arr,$item){
  29. $key = key($item);
  30. $current = current($item);
  31. $arr[$key] = $current;
  32. return $arr;
  33. });
  34. printf('<pre>%s</pre>',print_r($res,true));
  35. // 输出 Array
  36. // (
  37. // [name] => machiel
  38. // [id] => 101
  39. // [password] => 123456
  40. // )

2. 查询与替换

2.1 array_slice 从数组中取出一部分

  1. // array_slice()
  2. // array_slice(数组名,索引‘从0开始’,步长,是否保留原键名默认flase不保存)
  3. $arr = ['red','green','yellow','blank','blue'];
  4. // 取出第三个
  5. $slice = array_slice($arr,2,1,true);
  6. print_r($slice);
  7. // 输出 Array ( [2] => yellow )

2.2 array_splice 去掉数组中一部分并用其他值代替

  1. // array_splice()
  2. // array_splice(数组名,索引,步长,替换值)
  3. // 将第一个替换为white
  4. array_splice($arr,0,1,'white');
  5. printf('<pre>%s</pre>',print_r($arr,true));
  6. // 输出
  7. // Array
  8. // (
  9. // [0] => white
  10. // [1] => green
  11. // [2] => yellow
  12. // [3] => blank
  13. // [4] => blue
  14. // )

3.总结

array_filter 重点在于过滤某个元素,返回过滤后的数组
array_walk 遍历数组进行某种操作
array_map 遍历一个或多个数组,返回一个新数组,函数在前,可以放入多个数组

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:如果图中的函数能掌握80%就很厉害了
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学