浅析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 url地址栏传中文乱码解决方法集合
Jun 25 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
php生成zip文件类实例
Apr 07 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
详解PHP原生DOM对象操作XML的方法
Oct 17 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
在字符串中把网址改成超级链接
2006/10/09 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
PHP数组操作类实例
2015/07/11 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
使图片旋转的3种解决方案
2013/11/21 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
php+js实现倒计时功能
2014/06/02 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
QML用PathView实现轮播图
2020/06/03 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
网络方面基础面试题
2012/11/16 面试题
办理信用卡工作证明
2014/01/11 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书