array_walk、array_map、array_filter  和 foreach 都有循环对数组元素进行处理的功能。

一、array_walk 用法

1、循环数组,回调处理(并不修改数组元素的值,而是跳出去做其他的事情[回调的定义])

如:

$arr = [
['name' => 'A', 'age' => 18],
['name' => 'B', 'age' => 11],
];
array_walk($arr, function ($value) {
//做其他的逻辑处理,不对数组元素进行处理
echo "name:" . $value['name'] . ', age:' . $value['age'] . "\n";
});

输出的结果:

name:A, age:18
name:B, age:11

2、循环数组,对数据的元素进行处理

如:

$arr = [
['name' => 'A', 'age' => 18],
['name' => 'B', 'age' => 11],
]; //使用引用
array_walk($arr, function (&$value) {
//修改元素的 age 值
$value['age'] = $value['age'] - 1; }); print_r($arr);

输出结果:

Array
(
[0] => Array
(
[name] => A
[age] => 17
)
[1] => Array
(
[name] => B
[age] => 10
)
)

二、array_map 用法

array_map 的作用其实和array_walk 的引用差不多,就是循环数组,对数组元素的值进行处理;

三、array_filter 用回调函数过滤数组中的单元

通过 array_filter 处理过的数组,数字索引的数组会是不连续的,要通过 array_values()处理整理数组

function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
} function even($var)
{
// returns whether the input integer is even
return(!($var & 1));
} $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12); echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));

array_walk、array_map、array_filter 的用法的更多相关文章

  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_filter,array_walk区别

    这几个方法都有遍历数组,操作的过程. 很容易搞混.尤其很多人养成的编程习惯都是使用foreach来循环遍历.. 就举个简单例子. $a = array( 0,1,2,3,4,5,6,7,8,9 ); ...

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

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

  4. php array_map array_filter sort

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

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

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

  6. PHP中array_map与array_column之间的关系分析

    array_map()与array_column()用法如下: array_map();将回调函数作用到给定数组的单元上array_column();快速实现:将二维数组转为一维数组 array_co ...

  7. PHP中 array_map 与 array_column 之间的关系

    (PHP 5 >= 5.5.0) array_map()与array_column()用法如下: array_map();将回调函数作用到给定数组的单元上array_column();快速实现: ...

  8. php数组操作集锦- 掌握了数组操作, 也就掌握了php

    参考下面的文章, 是很好的: http://www.cnblogs.com/staven/p/5142515.html http://pcwanli.blog.163.com/blog/static/ ...

  9. PHP中的回调函数和匿名函数

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

随机推荐

  1. session使用方法

    每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息. 如何维持客户端与服务器的会话?方法之一: servlet中写入: //新建一个session保存用户名 ...

  2. hadoop平台上HDFS和MAPREDUCE的功能、工作原理和工作过程

    作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3319 1.用自己的话阐明Hadoop平台上HDFS和MapReduce ...

  3. 定制比特币btc地址address

    https://99bitcoins.com/how-to-get-a-custom-bitcoin-address/ https://en.bitcoin.it/wiki/Vanitygen htt ...

  4. 微信小程序全局设置分享内容

    微信小程序每个页面都可以在onShareAppMessage中设置分享内容,如果想要全局设置成一样的分享内容如何设置呢? 在app.js中新增以下方法: //重写分享方法 overShare: fun ...

  5. Research Guide for Video Frame Interpolation with Deep Learning

    Research Guide for Video Frame Interpolation with Deep Learning This blog is from: https://heartbeat ...

  6. codeDecodeError ascii codec can't decode byte 0xe2 in position 44 ordinal not in range(128)

  7. 清理收藏夹中的CSS

    1.去掉元素的属性, 例如宽度 #blog-calendar { width: initial !important; }

  8. typescript - 9.装饰器

    装饰器:装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,属性或参数上,可以修改类的行为. 通俗的讲装饰器就是一个方法,可以注入到类.方法.属性参数上来扩展类.属性.方法.参数的功能. 常见的装 ...

  9. [转]C++ 使用 curl 进行 http 请求(GET、POST、Download)的封装

    原文连接:https://www.cnblogs.com/oftenlin/p/9478067.html CommonTools.h   /* * CommonTools.h * * Created ...

  10. Android 加密之文件级加密(CE/DE)

    https://blog.csdn.net/myfriend0/article/details/77094890/   Android加密之文件级加密