浅析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 相关文章推荐
PHP Document 代码注释规范
Apr 13 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
php缓存技术详细总结
Aug 07 PHP
PHP循环函数使用介绍之PHP基础入门教程
Sep 21 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
php文件夹的创建与删除方法
Jan 24 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
php实现搜索类封装示例
Mar 31 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 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
德生1994机评
2021/03/02 无线电
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
js操作二级联动实现代码
2010/07/27 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
详解puppeteer使用代理
2018/12/27 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
Python class的继承方法代码实例
2020/02/14 Python
什么是python类属性
2020/06/10 Python
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
投标保密承诺书
2014/05/19 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
三问三解心得体会
2014/09/05 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
五年级作文之想象作文
2019/10/30 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python