博客列表 >PHP基础:数组回调函数的应用

PHP基础:数组回调函数的应用

暴宇
暴宇原创
2020年05月29日 21:17:441208浏览

PHP基础:数组回调函数的应用

1.array_filter():用回调函数过滤数组中的单元

array_filter(要处理的数组,回调函数(用于处理数组),默认只接收值/ARRAY_FILTER_USE_BOTH接收键和值/ARRAY_FILTER_USE_KEY只接收键)

  1. echo 'array_filter():用回调函数过滤数组中的单元<br>';
  2. // 1、array_filter(要处理的数组,回调函数(用于处理数组),默认只接收值/ARRAY_FILTER_USE_BOTH接收键和值/ARRAY_FILTER_USE_KEY只接收键)
  3. $arr = ['html'=>60,'php'=>70,'js'=>80,'java'=>56,'css'=>45,'c++'=>0,null,false,[],'',0,'0'];
  4. // php自动转为false的值: null, false, 空数组, 空字符串, 0, '0'
  5. // 提示: 空对象不能转为false, 但是空数组是false
  6. echo '1.过滤数组中小于60的值,仅保留大于等于60的值<br>';
  7. // 方式一:代码量少,无法过滤空数组
  8. // $res = array_filter($arr,function($item){
  9. // return $item>=60;
  10. // });
  11. // 方式二:代码更严谨,可以过滤空数组
  12. $res = array_filter($arr,function($item){
  13. if($item>=60){
  14. return $item;
  15. }
  16. });
  17. printf('<pre>%s</pre>',print_r($res,true));
  18. echo '2.过滤数组中的假值(null,false,空数组,空字符串, 0,"0"都会被转换为false假值)<br>';
  19. $res = array_filter($arr);
  20. printf('<pre>%s</pre>',print_r($res,true));
  21. echo '<hr>';

2.array_map 为数组的每个元素应用回调函数

array_map(回调函数,要处理的数组)

  1. echo 'array_map()为数组的每个元素应用回调函数<br>';
  2. echo '1.为数组每个元素执行*2计算<br>';
  3. $arr = [1,2,3,4,5];
  4. $res=array_map(function($item){
  5. return $item*2;
  6. },$arr);
  7. printf('<pre>%s</pre>',print_r($res,true));
  8. // array_map(): 同时处理多个数组
  9. echo '2.将两个数组的每个元素一一对应变成键值对<br>';
  10. $key = ['html', 'css', 'js'];
  11. $values = ['80', '78', '90'];
  12. $res = array_map(function($value1, $value2) {
  13. return [$value1 => $value2];
  14. }, $key, $values);
  15. printf('<pre>%s</pre><hr>', print_r($res, true));
  16. echo '3.将多个数组的每个元素一一对应变成新数组<br>';
  17. $id = ['101', '102', '103'];
  18. $name = ['zhang', 'li', 'wang'];
  19. $age = [30, 28, 35];
  20. $res = array_map(null,$id,$name,$age);
  21. printf('<pre>%s</pre>', print_r($res, true));
  22. echo '<hr>';


3.array_reduce 用回调函数迭代地将数组简化为单一的值

array_reduce(要处理的函数,回调函数)

  1. echo 'array_reduce()用回调函数迭代地将数组简化为单一的值<br>';
  2. $arr=[['html'=>80],['css'=>78],['js'=>90]];
  3. $res=array_reduce($arr, function($carry, $item){
  4. // 获取当前元素的键
  5. $key = key($item);
  6. // 获取当前元素的值
  7. $value = current($item);
  8. // 拼装成键值对
  9. $carry[$key] = $value;
  10. return $carry;
  11. });
  12. printf('<pre>%s</pre>', print_r($res, true));
  13. echo '<hr>';

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

array_walk(数组, 回调函数,回调的第三个参数(默认值为null))

  1. echo 'array_walk()使用用户自定义函数对数组中的每个元素做回调处理<br>';
  2. // array_walk(数组, 回调函数,回调的第三个参数(默认值为null))
  3. $arr=['html'=>80,'css'=>78,'js'=>90];
  4. echo '1.不传第三个参数<br>';
  5. array_walk($arr, function($value, $key) {
  6. printf('[ %s ] => [ %s ] <br>',$key,$value);
  7. });
  8. echo '2.传第三个参数<br>';
  9. array_walk($arr, function($value, $key,$userdata) {
  10. printf('[ %s ] %s [ %s ] <br>',$key,$userdata,$value);
  11. },'======>');

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议