浅析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 26 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
php和asp语法上的区别总结
May 12 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 PHP
imagettftext() 失效,不起作用
Mar 09 PHP
PHP策略模式写法
Apr 01 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数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
php实现微信公众号无限群发
2015/10/11 PHP
深入php内核之php in array
2015/11/10 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
Python的time模块中的常用方法整理
2015/06/18 Python
python中logging库的使用总结
2017/10/18 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
印度低票价航空公司:GoAir
2017/10/11 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
体育教育专业自荐信范文
2013/12/20 职场文书
高三毕业寄语
2014/04/10 职场文书
积极向上的团队口号
2014/06/06 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
Python各协议下socket黏包问题原理
2022/04/12 Python
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技