array_map,array_filter,array_walk区别
2015-12-04 10:57
246 查看
这几个方法都有遍历数组,操作的过程。 很容易搞混。尤其很多人养成的编程习惯都是使用foreach来循环遍历。。
就举个简单例子。
Array
(
[0] => 0
)
Array
(
[0] => 0
[1] => 10
[2] => 10
[3] => 10
[4] => 10
[5] => 10
[6] => 10
[7] => 10
[8] => 10
[9] => 10
)
0=>0 1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9
显然,array_filter,函数的作用就是过滤原数组,在过滤函数中,返回true的,才会保留。结果数组通常元素个数就少于了原数组个数(过滤了的话
array_map,函数作用是对原数组元素进行一一map映射,元素个数仍然是原来的。map函数中,直接返回的是键值了。
array_walk,这个函数,walk函数接收key和value两个参数,直接在walk函数中处理业务。
简单的区别就是这样,详细参考手册。。
array_map是遍历数组元素调用函数,不只是可以调用自定义函数,也可以调用内置函数。
比如希望对一个数组的所有元素去左右空格。
可以foreach,再trim。
当然可以使用array_map
-
就举个简单例子。
$a = array( 0,1,2,3,4,5,6,7,8,9 ); function filter($v){ return $v == 0 ? true :false; } function map($v){ return $v == 0 ? 0 : 10; } // array_walk函数中,如果想直接作用于数组中的值,可以把$v,写成引用形式&$v function walk($v, $k){ echo $k , '=>', $v ,'\r\n'; } $b = array_filter($a, 'filter'); /** // 也可以把回调函数,放在filter里。 $b = array_filter($a, function(){ return $v == 0 ? true :false; }); */ // array_map 函数中的参数顺序,和filter不一样。。 $c = array_map('map', $a);// 同理也可以把回调函数放在这里 print_r($b); print_r($c); array_walk($a, 'walk');
Array
(
[0] => 0
)
Array
(
[0] => 0
[1] => 10
[2] => 10
[3] => 10
[4] => 10
[5] => 10
[6] => 10
[7] => 10
[8] => 10
[9] => 10
)
0=>0 1=>1 2=>2 3=>3 4=>4 5=>5 6=>6 7=>7 8=>8 9=>9
显然,array_filter,函数的作用就是过滤原数组,在过滤函数中,返回true的,才会保留。结果数组通常元素个数就少于了原数组个数(过滤了的话
array_map,函数作用是对原数组元素进行一一map映射,元素个数仍然是原来的。map函数中,直接返回的是键值了。
array_walk,这个函数,walk函数接收key和value两个参数,直接在walk函数中处理业务。
简单的区别就是这样,详细参考手册。。
array_map是遍历数组元素调用函数,不只是可以调用自定义函数,也可以调用内置函数。
比如希望对一个数组的所有元素去左右空格。
可以foreach,再trim。
当然可以使用array_map
$re = array_map('trim', $arr);
-
相关文章推荐
- 不使用(a+b)/2的这种方式,求两个数的平均数
- ant的安装,配置及验证
- javascript里面的数组,json对象,动态添加,修改,删除示例
- 旋屏控制技巧
- ubuntu14.04终端输入命令,终端崩溃
- 拥抱高效、拥抱 Bugtags 之来自用户的声音 2
- phpcms V9实现wap上一篇、下一篇功能
- js图片大小限制,设置
- C#加密方法总汇
- 利用Bundle实现Android Activity间消息的传递
- SQL语句 SELECT LIKE like用法详解
- 使用Eclipse调试Java程序代码
- Day 8: Harp.JS——现代静态web服务器
- 关于无线wifi漫游设置
- Content Provider 基础 之URI
- cocos2dx-3.4 编译apk包 文件名、目录名或卷标语法不正确 解决方案
- 关于Android SQLite详细
- LayoutInflater.from(this)的用法
- Android客户端与服务端通信乱码问题的解决
- android 模拟器和电脑服务器端用socket通讯