浅析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
生成php程序的php代码
Apr 07 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
PHP静态调用非静态方法的应用分析
May 02 PHP
深入php数据采集的详解
Jun 02 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
PHP类型约束用法示例
Sep 28 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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笔记之:AOP的应用
2013/04/24 PHP
深入php数据采集的详解
2013/06/02 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
Python实现图片转字符画的示例
2017/08/22 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
体育学院毕业生自荐信
2013/11/03 职场文书
思想汇报范文
2013/11/04 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
讲解员培训方案
2014/05/04 职场文书
人事任命书怎么写
2014/06/05 职场文书
怎样写离婚协议书
2014/09/10 职场文书
小学信息技术教学反思
2016/02/16 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技