浅析php中array_map和array_walk的使用对比


Posted in PHP onNovember 20, 2016

一、array_map()

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

     2、回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

     3、提示:您可以向函数输入一个或者多个数组。

            若相函数输入2个数组,其函数接受参数也应该有两个,map给函数传值时,是每次从两个数组中分别取一个传给函
数。即多个数组之间是同步提交的,不是提交完一个数组再提交下一个提交几个数组,则函数也需要有几个参数

     4、语法: array array_map ( callable callback,arrayarr1 [, array $… ] )

实例:

<?php 
//单数组形式
function myfunction($v)
{
 if ($v==="Dog")
 {
  return "Fido";
 }
 return $v;
}

$a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a));

//多数组形式
function myfunction1($v1,$v2)
{
 if ($v1===$v2)
 {
  return "same";
 }
 return "different";
}

$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction1",$a1,$a2));
?>

二、array_walk()

     1、array_walk — 使用用户自定义函数对数组中的每个元素做回调处理

     2、语法: bool array_walk ( array &array,callablefuncname [, mixed $userdata = NULL ] )

参数:

 $array     输入的数组。

 $funcname  回调函数,典型情况下 $funcname 接受两个参数。$array 参数的值作为第一个, 键名作为第二个。

 $userdata  如果提供了可选参数 $userdata ,将被作为第三个参数传递给 $funcname。

注意:

如果 $funcname 需要直接作用于数组中的值,则给 funcname 的第一个参数指定为引用(添加&符号)。这样
任何对这些单元的改变也将会改变原始数组本身。

返回值 :

成功时返回 TRUE, 或者在失败时返回 FALSE。

实例:

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
//传引用,改变了所传参数组
function test_alter(&$item1, $key, $prefix)
{
 $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
 echo "$key. $item2<br />\n";
}

echo "Before ...:\n";
//单数组
array_walk($fruits, 'test_print');

//带额外参数
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');

以上例程会输出:

Before ...:
d. lemon
a. orange
b. banana
c. apple
 ... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple

关键点:

 map    主要是为了得到你的回调函数处理后的新数组,要的是结果。

 walk   主要是对每个参数都使用一次你的回调函数,要的是处理的过程。

 walk   可以认为提供额外参数给回调函数,map不可以

 walk   主要是要对数组内的每个值进行操作,操作结果影响原来的数组

 map    主要是对数组中的值进行操作后返回数组,以得到一个新数组

 walk   可以没有返回值 map要有,因为要填充数组

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
php在线打包程序源码
Jul 27 PHP
深入解析php之apc
May 15 PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 PHP
PHP生成RSS文件类实例
Dec 05 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 PHP
php解决DOM乱码的方法示例代码
Nov 20 #PHP
使用Yii2实现主从数据库设置
Nov 20 #PHP
php 二维数组时间排序实现代码
Nov 19 #PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 #PHP
php socket通信简单实现
Nov 18 #PHP
php微信开发之自定义菜单实现
Nov 18 #PHP
php微信开发之百度天气预报
Nov 18 #PHP
You might like
PHP 表单提交给自己
2008/07/24 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
js转换对象为xml
2017/02/17 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
js实现列表按字母排序
2020/08/11 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[03:12]2016完美“圣”典风云人物:单车专访
2016/12/02 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
python实现发送和获取手机短信验证码
2016/01/15 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
python实现折半查找和归并排序算法
2017/04/14 Python
Python算法之求n个节点不同二叉树个数
2017/10/27 Python
python函数的万能参数传参详解
2019/07/26 Python
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
车祸赔偿收入证明
2014/01/09 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
小组口号大全
2014/06/09 职场文书
小学校长个人总结
2015/03/03 职场文书
城南旧事读书笔记
2015/06/29 职场文书
redis 查看所有的key方式
2021/05/07 Redis