浅析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 相关文章推荐
SSI指令
Nov 25 PHP
抓取YAHOO股票报价的类
May 15 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
Destoon模板制作简明教程
Jun 20 PHP
php获取随机数组列表的方法
Nov 13 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
php fread函数使用方法总结
May 28 PHP
php创建类并调用的实例方法
Sep 25 PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 03 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 根据自增id创建唯一编号类
2017/04/06 PHP
JavaScript面向对象编程
2008/03/02 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
js实现登录验证码
2016/12/22 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
python 容器总结整理
2017/04/04 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
土木工程应届生求职信
2013/10/31 职场文书
电视购物广告词
2014/03/19 职场文书
股东协议书范本
2014/04/14 职场文书
我的梦想演讲稿
2014/04/30 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
团代会邀请函
2015/02/02 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
python使用glob检索文件的操作
2021/05/20 Python
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技