• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【php学习】array_map,array_walk,array_filter的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
array_map(function($v){
    //
}, $array);
array_walk($array, function($v, $k){
    //
});
array_filter($array, function($v){
    //
});

以上三者 array_map、array_walk、array_filter

相同点:都是利用回调函数对数组中每个元素进行操作。

不同点:

  • 返回值
  • 回调函数的参数
  • 是否改变数组的值

 

array_map 返回的是新数组,原数组不变(新数组和原数组的数组长度应该一样)

array_walk 返回的布尔值,如果要改变数组元素的值,回调函数第一个参数必须是引用,如  array_walk($array, function(&$v, $k){});  , arrary_walk 的回调函数还能够接收数组的key。

array_filter 返回的是新数组,原数组不变。它的作用是过滤数组中的元素。回调函数返回真,元素才能保存到新数组中,即(新数组和原数组的数组长度可能不一样)

下面是个例子

 1 echo "<pre>";
 2 testArrayCallBack();
 3 function testArrayCallBack(){
 4     $arr = array(12,64,3,47);
 5     
 6     //array_map返回的新数组,原数组不变
 7     $newArr = array_map(function($v){
 8         return ++$v;
 9     },$arr);
10     echo "原数组:<br/>"; print_r($arr);
11     echo "array_map 返回的新数组:<br/>"; print_r($newArr);
12     
13     //array_walk返回布尔值,原数组改变
14     $b = array_walk($arr, function(&$v, $k){    //如果想回调函数能直接改变数组的值,那么回调函数地址参数应为引用。
15         $v+=$k;
16     });
17     echo "原数组:<br/>"; print_r($arr);
18     echo "array_walk 返回的布尔值:"; var_dump($b );
19     
20     //array_filter返回新数组,原数组不变
21     $newArr = array_filter($arr, function($v){
22         return $v > 10;
23     });
24     echo "原数组:<br/>"; print_r($arr);
25     echo "array_filter返回的新数组:<br/>"; print_r($newArr);
26 }

 

执行结果:

原数组:
Array
(
    [0] => 12
    [1] => 64
    [2] => 3
    [3] => 47
)
array_map 返回的新数组:
Array
(
    [0] => 13
    [1] => 65
    [2] => 4
    [3] => 48
)
原数组:
Array
(
    [0] => 12
    [1] => 65
    [2] => 5
    [3] => 50
)
array_walk 返回的布尔值:bool(true)
原数组:
Array
(
    [0] => 12
    [1] => 65
    [2] => 5
    [3] => 50
)
array_filter返回的新数组:
Array
(
    [0] => 12
    [1] => 65
    [3] => 50
)

 

总结:

array_map 对参数数组的每个元素进行操作,返回新数组,不改变原数组的值

array_walk 对参数数组的每个元素进行操作,返回布尔,改变原数组的值。

array_filter 对参数数组的元素进行过滤,返回新数组,不改变原数组的值。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php7扩展模块添加php扩展模块添加发布时间:2022-07-10
下一篇:
php.ini路径设置、libmysql.dll加载等发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap