浅析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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
php+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
PHP 解决session死锁的方法
Jun 20 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 PHP
php自定义apk安装包实例
Oct 20 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
php模拟post上传图片实现代码
Jun 24 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 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实现LOL数据远程获取
2014/06/10 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
AngularJS语法详解
2015/01/23 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
详解如何较好的使用js
2016/12/16 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
python各种语言间时间的转化实现代码
2016/03/23 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
python将数据插入数据库的代码分享
2020/08/16 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
机电一体化自荐信
2013/12/10 职场文书
学习新党章思想汇报
2014/01/09 职场文书
教师党性分析材料
2014/02/04 职场文书
土木工程求职信
2014/05/29 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
英语教学课后反思
2016/02/15 职场文书