zoukankan      html  css  js  c++  java
  • 自定义 array_map() 对应的递归函数 array_map_recursive()

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

    function array_map_recursive($filter, $data) 
    {
        $result = array();
        foreach ($data as $key => $val) 
    	{
            $result[$key] = is_array($val)
             ? array_map_recursive($filter, $val)
             : call_user_func($filter, $val);
        }
    
        return $result;
    }

    应用举例:

    $arr = array(
    	'a' => '2',
    	'b' => array(
    		'cc' => 'wen',
    		'dd' => 'jian',
    		'ee' => 'bao'
    	)
    );
    
    function func_a($value)
    {
    	$value .= '_AAA';
    	return $value;
    }
    
    var_dump($arr);
    
    $arr = array_map_recursive('func_a', $arr);
    
    var_dump($arr);

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

    $arr = array(
    	'a' => '2',
    	'b' => array(
    		'cc' => 'wen',
    		'dd' => 'jian',
    		'ee' => 'bao'
    	)
    );
    
    function func_b(&$value)
    {
    	$value .= '_AAA';
    }
    
    var_dump($arr);
    
    array_walk_recursive($arr, 'func_b');
    
    var_dump($arr);

    输出:

    array(2) {
      ["a"]=>
      string(1) "2"
      ["b"]=>
      array(3) {
        ["cc"]=>
        string(3) "wen"
        ["dd"]=>
        string(4) "jian"
        ["ee"]=>
        string(3) "bao"
      }
    }
    array(2) {
      ["a"]=>
      string(5) "2_AAA"
      ["b"]=>
      array(3) {
        ["cc"]=>
        string(7) "wen_AAA"
        ["dd"]=>
        string(8) "jian_AAA"
        ["ee"]=>
        string(7) "bao_AAA"
      }
    }
    

      

      

    延伸阅读:

    PHP数组函数大全

  • 相关阅读:
    Struts2之Action基础与配置
    关于Struts2的类型转换详解
    Struts2自定义类型转换器
    MyEclipse 快捷键
    Struts2中的ActionContext
    struts2中的action访问web对象
    5.9每日一题题解
    5.8 每日一题题解
    5.7 每日一题题解
    5.6 每日一题题解
  • 原文地址:https://www.cnblogs.com/52php/p/5681820.html
Copyright © 2011-2022 走看看