Blogger Information
Blog 29
fans 0
comment 0
visits 27353
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础:数组回调函数的应用
暴宇
Original
1220 people have browsed it

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. },'======>');

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:php中的许多函数与js中的很像不是吗? 对比学, 效率更高
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post