/**

* array_filter 用回调函数处理数组中的各个元素,
* 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,
* 如果返回了false,那么这个元素将会被过滤掉。PS:保持了原来的索引。
*/
$arr = array(1,2,3,'aaa'=>4,5);

$newArr = array_filter($arr,function($val) {
if ($val == 3) {
return false; // 返回false 这个元素将要被过滤掉
}
return true; //保留的元素
});

print_r($newArr);

/**
array_map 函数势必比array_walk要更常用,因为php内置函数默认就是传的值而不是引用,
那么你使用内置函数如:intval() strtolower()。。的时候walk就无能为力了
* array_map 用回调函数处理数组中的各个元素,
* 在函数中你可以改变各个元素的值,
* 重点在你需要什么样的值就返回什么样的值,保持索引。
可以一次性处理多个数组。但是数组的数量应该与回调函数的参数保持一致
*/
$arr = array(1,2,3,'aaa'=>4,5);

$newArr = array_map(function($val) {
if ($val == 3) {
$val *= $val;
}
return $val; //这里是改变过的值,可以返回给新的数组

},$arr);

print_r($newArr);

/**
* ps : 如果处理的数组不是二维,可以用array_map进行取代
* 处理二维数组用array_walk_recursive函数,
* 在处理一维数组时,但是或许array_walk函数因为是传引用,处理大数组时效率或许会比array_map高呢?
* array_walk 用回调函数处理数组中的各个元素,
* 此函数返回bool。所以需要配合引用传值直接改变原数组才有一定的功效。
*/

//摘自手册 只有 array 的值才可以被改变,用户不应在回调函数中改变该数组本身的结构。
//例如增加/删除单元,unset 单元等等。
$arr = array(1,2,3,'aaa'=>4,5);

array_walk($arr,function(&$val,$key) {
if ($val == 3) {
echo $key.'<br/>';
$val = 33333;
}
});

print_r($arr);

array_filter、array_map、array_walk解释的更多相关文章

  1. 【转】php 之 array_filter、array_walk、array_map的区别

    [转]php 之 array_filter.array_walk.array_map的区别 原文:https://blog.csdn.net/csdnzhangyiwei/article/detail ...

  2. 空循环比较 for foreach array_map array_walk

    申请一个数组,然后不断的跑空循环,看看执行时间 for循环 foreach (不使用键) foreach(使用键) array_map array_walk 查看效率速度发现很明显 是foreach更 ...

  3. 009——数组(九) each list array_map array_walk array_walk_recursive

    <?php /** * 9 数组 each list array_map array_walk array_walk_recursive */ //each() 返回数组中的键名和键值生成新数组 ...

  4. array_filter、array_walk、array_map的区别

    <?php $arr=array( 1,2,3,4,5,6 ); function filter($var){ if($var%2==0) return true; } $data=array_ ...

  5. array_map array_walk

    $config = [ => [], => [], => [] ]; array_map(function($key) use ($config){ print_r($key); d ...

  6. 浅析 array_map array_walk

    map    主要是为了得到你的回调函数处理后的新数组,要的是结果. walk   主要是对每个参数都使用一次你的回调函数,要的是处理的过程. walk   可以认为提供额外参数给回调函数,map不可 ...

  7. 利用php数组函数进行函数式编程

    因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...

  8. 常用的php数组函数

    以下是自己比较常用的数组函数 数组元素增加减少array_pusharray_poparray_shiftarray_unshift array_splice  (对数组的增删改) array_sli ...

  9. 转载:利用php数组函数进行函数式编程

    因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...

随机推荐

  1. MSSQLLocalDB 连接字符串 vs2015

    <add key="MSConnectionString" value="Data Source=(localdb)\MSSQLLocalDB;Initial Ca ...

  2. ::selection{}

    ::selectiion{}这是一个伪类选择器,这个是当我们在选择网页上某些文字时(通常是为了复制文字),文字的背景颜色和文字颜色都会发生变化(一般为背景变成蓝色,文字变成白色),这样的写法在IE9及 ...

  3. 【原创】jQuery 仿百度输入标签插件

    1.先上效果图 2.调用方式 <link href="/Styles/tagsinput.css" rel="stylesheet" type=" ...

  4. jQuery使用经验建议

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以复制并粘贴大部分的代码结构,只要专注最主要的逻辑代码就行了. 使用相同的设计模式和架构也 ...

  5. python的metaclass

    元类一般用于创建类.在执行类定义时,解释器必须要知道这个类的正确的元类.解释器会先寻找类属性__metaclass__,如果此属性存在,就将这个属性赋值给此类作为它的元类.如果此属性没有定义,它会向上 ...

  6. MongoDB在实际项目中的使用

    MongoDB简介 MongoDB是近些年来流行起来的NoSql的代表,和传统数据库最大的区别是支持文档型数据库. 当然,现在的一些数据库通过自定义复合类型,可变长数组等手段也可以模拟文档型数据库. ...

  7. 怎样实现了捕获应用中的日志在android开发中

    怎样实现了捕获应用中的日志在android开发中,大家可研究一下. Process mLogcatProc = null; BufferedReader reader = null; try { mL ...

  8. WebView的使用及添加进度条

    实现的效果比较简单类似于微信打开网页,头部有个进度条显示加载进度 下载地址:http://download.csdn.net/detail/qq_29774291/9666941 1.在安卓端加载一个 ...

  9. objective-c高德地图时时定位

    这篇随笔是对上一遍servlet接口的实现. 一.项目集成高德地图 应为我这个项目使用了cocopods这个第三方库管理工具,所以只需要很简单的步骤,就能将高德地图集成到项目中,如果你没使用过这工具, ...

  10. PHP高效率写法

    1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍.当然了,这个测试方法需要在十万级以上次执行,效果才明显.其实静态方法和非静态方法的效率 ...