array_map,array_filter,array_walk区别
这几个方法都有遍历数组,操作的过程。 很容易搞混。尤其很多人养成的编程习惯都是使用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区别的更多相关文章
- 【php学习】array_map,array_walk,array_filter的区别
array_map(function($v){return $v+1;}, $array); array_walk($array, function($v, $k){...}); array_filt ...
- array_map、array_walk、array_filter三个函数的区别
array_walk --- 使自定的函数能处理数组的每个元素 bool array_walk ( array &array, callback funcname [, mixed userd ...
- array_filter、array_map、array_walk解释
/** * array_filter 用回调函数处理数组中的各个元素, * 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时, * 如果返回了false,那么这个元素将会被过滤掉.PS:保持了 ...
- array_map、array_walk、array_reduce
不同情境下替换foreach,且效果更佳 array_map 遍历原数组,array_map()参数中有几个数组,自定义函数就接收几个参数, 在每个值上进行自定义函数处理,具有返回值,需要一个新数组 ...
- php array_map与array_walk使用对比
array_map(): 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调函 ...
- php中array_map和array_walk的使用对比_php技巧
一.array_map() 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调 ...
- php array_map array_filter sort
array_map — Applies the callback to the elements of the given arrays (处理映射) array_filter — Filters e ...
- php中array_map和array_walk的使用对比
一.array_map() 1.array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组,若函数作用后无返回值,则对应的新值数组中为空. 2.回调 ...
- PHP 高级工程面试题汇总
PHP高级工程面试题汇总(2018.05) 1.给你四个坐标点,判断它们能不能组成一个矩形,如判断([0,0],[0,1],[1,1],[1,0])能组成一个矩形. 勾股定理,矩形是对角线相等的四边形 ...
随机推荐
- MySQL的事务的处理
步骤: 1.开启事务 start transaction 当我们开启一个事务的时候,我们对sql的操作都发生在内存中,但是没有真正的反馈到数据库磁盘的文件中! 2.回滚 rollback 回滚,就是恢 ...
- Xrdp vnc password failed
I try to login Ubuntu 16.04 xrdp through window 10 with mstsc. It was successful in 2019/01/09 night ...
- python 多进程、多线程
1.多线程: 下面讲一个简单用法,这个模块比较简单,但是实际使用中会遇到很多坑 from multiprocessing import process def go(s): print "主 ...
- Python之聚类(KMeans,KMeans++)
# -*- coding: utf-8 -*- """ Created on Mon Sep 17 16:41:46 2018 @author: zhen "& ...
- 【SPL标准库专题(1)】 SPL简介
什么是SPL SPL是Standard PHP Library(PHP标准库)的缩写. 根据官方定义,它是"a collection of interfaces and classes th ...
- h5页面调用摄像头(简易版)
<input type="button" value="OpenVideo" id="btnOpenVideo" /> < ...
- 转:sql语句优化
性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设 ...
- windows安装Anaconda3
目录 windows安装Anaconda3 环境 安装 windows安装Anaconda3 by 铁乐与猫 环境 windows7 64位 Anaconda3 5.2.0版本 windows64位 ...
- 一次SQLServer数据库宕机问题
数据库采用SQL Server 2005版本, 数据库文件约为6G,而LDF日志文件已经高达36G. 服务器开始变的不太稳定 .数据没有成功保存. 打开事件查看器发现很多信息日志 数据库 '' 中的文 ...
- October 25th, 2017 Week 43rd Wednesday
Perseverance is not a long race; it is many short races one after another. 坚持不是一个长跑,她是很多一个接一个的短跑. To ...