这几个方法都有遍历数组,操作的过程。 很容易搞混。尤其很多人养成的编程习惯都是使用foreach来循环遍历。。

就举个简单例子。

$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);

-

array_map,array_filter,array_walk区别的更多相关文章

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

    array_map(function($v){return $v+1;}, $array); array_walk($array, function($v, $k){...}); array_filt ...

  2. array_map、array_walk、array_filter三个函数的区别

    array_walk --- 使自定的函数能处理数组的每个元素 bool array_walk ( array &array, callback funcname [, mixed userd ...

  3. array_filter、array_map、array_walk解释

    /** * array_filter 用回调函数处理数组中的各个元素, * 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时, * 如果返回了false,那么这个元素将会被过滤掉.PS:保持了 ...

  4. array_map、array_walk、array_reduce

    不同情境下替换foreach,且效果更佳 array_map  遍历原数组,array_map()参数中有几个数组,自定义函数就接收几个参数, 在每个值上进行自定义函数处理,具有返回值,需要一个新数组 ...

  5. php array_map与array_walk使用对比

    array_map(): 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调函 ...

  6. php中array_map和array_walk的使用对比_php技巧

    一.array_map() 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调 ...

  7. php array_map array_filter sort

    array_map — Applies the callback to the elements of the given arrays (处理映射) array_filter — Filters e ...

  8. php中array_map和array_walk的使用对比

    一.array_map() 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调 ...

  9. PHP 高级工程面试题汇总

    PHP高级工程面试题汇总(2018.05) 1.给你四个坐标点,判断它们能不能组成一个矩形,如判断([0,0],[0,1],[1,1],[1,0])能组成一个矩形. 勾股定理,矩形是对角线相等的四边形 ...

随机推荐

  1. form表单提交注意事项

    1.在一个form表单中,若只有一个input(不管type是什么),按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,这是form表单的一个特性. 2.在一个表单中 ...

  2. CAC的Debian-8-64bit安装BBR正确方式是?

    裝过三台debian 64 bit, CAC, 2歐, KVM虛擬機 做法都一樣 0. 有裝銳速記得先刪除, 免得換核心後, 銳速在扯後腿 1.換4.9版kernel 有正式版 別裝啥rc版, 4.9 ...

  3. 在SQL Server中用好模糊查询指令LIKE (转载)

    like在sql中的使用:在SQL Server中用好模糊查询指令LIKE:查询是SQL Server中重要的功能,而在查询中将Like用上,可以搜索到一些意想不到的结果和效果,like的神奇 一.一 ...

  4. od 转储 二进制文件常用命令

    od :  NAME od - dump files in octal and other formats 常用命令: ➜ Downloads od -t x1 -Ax /etc/ld.so.cach ...

  5. Spark 基本概念 & 安装

    1. Spark 基本概念 1.0 官网 传送门 1.1 简介 Spark 是用于大规模数据处理的快如闪电的统一分析引擎. 1.2 速度 Spark 可以获得更高的性能,针对 batch 计算和流计算 ...

  6. [转]Redis学习---Redis高可用技术解决方案总结

    [原文]https://www.toutiao.com/i6591646189714670093/ 本文主要针对Redis常见的几种使用方式及其优缺点展开分析. 一.常见使用方式 Redis的几种常见 ...

  7. ORACLE 查看并修改最大连接数

    第一步,在cmd命令行,输入sqlplus,打开登录窗口,如下: 第二步,根据提示输入用户名与密码 请输入用户名:sys as sysdba 输入口令:******** 第三步,查看processes ...

  8. MySQL主从复制半同步复制原理及搭建

    在MySQL5.5之前的版本中,MySQL的复制是异步复制,主库和从库的数据之间存在一定的延迟,比如网络故障等各种原因,这样子容易存在隐患就是:当在主库写入一个事务成功后并提交了,但是由于从库延迟没有 ...

  9. from urllib.request import urlopen

    from urllib.request impor urlopen      (负责打开浏览url内的html 文本) re.compile(r'alex(?P<name>\d+)and' ...

  10. 运行结果出现Process finished with exit code 0

    表示程序正常执行完毕并退出. 可以科普一下exit code,在大部分编程语言中都适用 exit code 0表示程序执行成功,正常退出 exit code 1表示执行过程中遇到了某些问题或者错误,非 ...