浅析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创建PDF中文文档
Oct 09 PHP
DISCUZ 分页代码
Jan 02 PHP
提高php运行速度的一些小技巧分享
Jul 03 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
PHP回调函数简单用法示例
May 08 PHP
如何使用php生成zip压缩包
Apr 21 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
css配合jquery美化 select
2013/11/29 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python下singleton模式的实现方法
2014/07/16 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
python实现QQ批量登录功能
2019/06/19 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
自动化专业职业生涯规划书范文
2014/01/16 职场文书
个人函授自我鉴定
2014/03/25 职场文书
高一学生期末评语
2014/04/25 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
2015国庆节66周年标语
2015/07/30 职场文书