浅析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中显示格式化的用户输入
Oct 09 PHP
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
扩展你的 PHP 之入门篇
Dec 04 PHP
PHP 网络开发详解之远程文件包含漏洞
Apr 25 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
简单的自定义php模板引擎
Aug 26 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
接收键盘指令的脚本
2006/06/26 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
js实现导航跟随效果
2018/11/17 Javascript
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
英文商务邀请信
2014/01/22 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
公休请假条
2014/04/11 职场文书
学习与创新自我评价
2015/03/09 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
python数字图像处理实现图像的形变与缩放
2022/06/28 Python