首页 > Web开发 > 详细

php中,使用回调函数处理数据的函数

时间:2020-11-10 16:05:30      阅读:41      评论:0      收藏:0      [点我收藏+]

array_walk、array_map、array_filter 的用法

异同点
?array_filter() 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,返回过滤后的数组
?array_map() 重点在于遍历一个数组或多个数组的元素,返回一个新的数组
?array_walk() 重点在于遍历数组进行某种操作

?array_filter() 和 array_walk()对一个数组进行操作,数组参数在前,函数参数在后
?array_map() 可以处理多个数组,因此函数参数在前,数组参数在后,可以根据实际情况放入多个数组参数

 1)array_walk 用法

  循环数组,回调处理(并不修改数组元素的值,而是跳出去做其他的事情[回调的定义]) 

$arr = [
    [name => A, age => 18],
    [name => B, age => 11],
];
 array_walk($arr, function ($value) {
     //做其他的逻辑处理,不对数组元素进行处理
     echo  "name:" . $value[name] . , age: . $value[age] . "\n";
 });

  循环数组,对数据的元素进行处理

$arr = [
    [name => A, age => 18],
    [name => B, age => 11],
];
//使用引用
 array_walk($arr, function (&$value) {
    //修改元素的 age  值
    $value[age] = $value[age] - 1;
    
 });

  2)array_map()

  该函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。

$arr1 = [1,2,3,4,5];
    $arr2 = [6,7,8,9,10];
    
    //函数写前面,数组参数写后面
    $new_arr = array_map(function($val1,$val2){
       return $val1 + $val2;
    },$arr1,$arr2);

  3)array_filter()

  该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。

$arr = [a,b,1,2,3];
    
    $new_arr = array_filter($arr,function($val){
        return is_numeric($val);
    });

 

  4)array_walk_recursive() 函数对数组中的每个元素应用回调函数。【多维数组】

  需要把多维数组里面的所有键值和键名都取出来。

array_walk_recursive($contentArr, function ($value, $key) use (&$result) {
        array_push($result, $key);
    });

 

 

 

参考:https://www.cnblogs.com/zhenbianshu/p/6063340.html

 

php中,使用回调函数处理数据的函数

原文:https://www.cnblogs.com/sien6/p/13954198.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!