array_walk 有个原生递归函数 array_walk_recursive($arr, 'function', 'words'),但是 array_map 却没有对应的递归函数 array_map_recursive,我们可以自定义一个:

  1. function array_map_recursive($filter, $data)
  2. {
  3. $result = array();
  4. foreach ($data as $key => $val)
  5. {
  6. $result[$key] = is_array($val)
  7. ? array_map_recursive($filter, $val)
  8. : call_user_func($filter, $val);
  9. }
  10.  
  11. return $result;
  12. }

应用举例:

  1. $arr = array(
  2. 'a' => '2',
  3. 'b' => array(
  4. 'cc' => 'wen',
  5. 'dd' => 'jian',
  6. 'ee' => 'bao'
  7. )
  8. );
  9.  
  10. function func_a($value)
  11. {
  12. $value .= '_AAA';
  13. return $value;
  14. }
  15.  
  16. var_dump($arr);
  17.  
  18. $arr = array_map_recursive('func_a', $arr);
  19.  
  20. var_dump($arr);

其实吧,完全可以用 array_walk_recursive() 函数 实现该功能,如下代码所示:

  1. $arr = array(
  2. 'a' => '2',
  3. 'b' => array(
  4. 'cc' => 'wen',
  5. 'dd' => 'jian',
  6. 'ee' => 'bao'
  7. )
  8. );
  9.  
  10. function func_b(&$value)
  11. {
  12. $value .= '_AAA';
  13. }
  14.  
  15. var_dump($arr);
  16.  
  17. array_walk_recursive($arr, 'func_b');
  18.  
  19. var_dump($arr);

输出:

  1. array(2) {
  2. ["a"]=>
  3. string(1) "2"
  4. ["b"]=>
  5. array(3) {
  6. ["cc"]=>
  7. string(3) "wen"
  8. ["dd"]=>
  9. string(4) "jian"
  10. ["ee"]=>
  11. string(3) "bao"
  12. }
  13. }
  14. array(2) {
  15. ["a"]=>
  16. string(5) "2_AAA"
  17. ["b"]=>
  18. array(3) {
  19. ["cc"]=>
  20. string(7) "wen_AAA"
  21. ["dd"]=>
  22. string(8) "jian_AAA"
  23. ["ee"]=>
  24. string(7) "bao_AAA"
  25. }
  26. }

  

  1.   

延伸阅读:

PHP数组函数大全

自定义 array_map() 对应的递归函数 array_map_recursive()的更多相关文章

  1. PHP笔记(PHP初级篇)

    学习完HTML和CSS后,终于要开始学习PHP啦!前面的铺垫只为后路的畅顺! PHP环境搭建: 企业中常用到的环境是:Linux+Apache+MySQL+PHP 学习环境是:Windows+Apac ...

  2. PHP初级篇

    PHP初级篇 PHP环境搭建: 企业中常用到的环境是:Linux+Apache+MySQL+PHP 学习环境是:Windows+Apache+MySQL+PHP 工具 Apache 2.4.4 MyS ...

  3. 20145221 《Java程序设计》第三周学习总结

    20145221 <Java程序设计>第三周学习总结 教材学习内容总结 第四章部分已在假期完成,详见博客: <Java程序设计>第四章-认识对象 第五章部分 何谓封装 封装实际 ...

  4. Go入门教程

    本人录制的Go入门视频 20小时快速入门go语言视频:https://pan.baidu.com/s/1jJPsThk 基础编程 01.Go语言介绍02.环境搭建03.第一个Go程序 04.命名.变量 ...

  5. 浏览器事件环(EventLoop)

    1. 基础知识 1. js语言特点 1. js语言是单线程语言,主线程是单线程.如UI渲染,脚本加载是主线程任务. 2. js语言采用事件循环(EventLoop)机制. 2. 同步任务: 不被引擎挂 ...

  6. sql递归函数(自定义函数递归查找) 能返回递归的层次

    实现效果图如下: 创建表: create table t_tree ( id int IDENTITY(1,1), parentid int, name varchar(10) ) go 插入测试数据 ...

  7. PHP数组函数: array_map()

    定义和用法 array_map() 函数返回用户自定义函数作用后的数组.回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致. 语法 array_map(function,a ...

  8. 巧用array_map()和array_reduce()替代foreach循环

    1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...

  9. php rmdir使用递归函数删除非空目录

    我们大家都知道,php rmdir()函数用于删除空目录,但如果要删除非空目录,我们必须将非空目录中的文件或子目录删除,本文章向大家介绍php如何使用递归函数删除非空目录,需要的朋友可以参考一下.首先 ...

随机推荐

  1. ASP.NET MVC 5 入门教程 (2) 控制器Controller

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-controller.html 上一节:ASP.NET MVC ...

  2. IL指令大全

    IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执 ...

  3. php上传图片---初级版

    没有样式,没有淘宝的那种放大截取大小的效果,只是实现了图片上传的功能. 图片超过100k,会出现内部错误服务器错误,需要手动更改配置文件里的MaxRequestLen属性. 下面粘上代码: <? ...

  4. (旧)子数涵数·Flash——路径补间

    一.打开flash软件(图为flash8) 二.创建新项目->Flash文档 三.使用椭圆工具,绘制一个圆形图像(快捷键为O,很形象吧) 四.在后面若干帧中插入关键帧,并移动刚刚绘制好的图像的位 ...

  5. WCF 入门(25,26,27,28)

    前言 项目赶时间,工期紧,熬过这段时间应该就好了吧.希望如此. 今天把自己那部分写的差不多了,回来和小伙伴一起又看了一遍<夏洛特烦恼>,还挺好看的,明天继续加班,do it. 第25-28 ...

  6. UItableView的编辑--删除移动cell

    // // RootViewController.m // UI__TableView的编辑 // // Created by dllo on 16/3/17. // Copyright © 2016 ...

  7. 思甜雅--关于qq的NABCD模型分析

    个人连接:http://www.cnblogs.com/xiaoliulang/ 关于QQ的NABCD模型 N--Need 随着电脑的普及,人们在网络上进行交流的时间越来越多,由于现有的交流工具还不是 ...

  8. requirejs

    //index.html <!doctype html> <html> <head> <meta charset="utf-8"> ...

  9. SP*

    1.PS1——默认提示符 root@tcx2250-14:/etc# echo $PS1\u@\h:\w\$ \u是用户名 \h是主机名 \w是当前目录的完整路径.请注意当你在主目录下的时候,如上面所 ...

  10. 【前端学习】sublime开启vim模式

    学习目标:在sublime下开启vim模式,了解基本vim的编辑快捷键. 下载安装Sublime Text 3 :http://www.sublimetext.com/3 Vim/Vi: Vim/Vi ...