代码之家  ›  专栏  ›  技术社区  ›  Sarfraz

对嵌套数组应用回调

  •  0
  • Sarfraz  · 技术社区  · 16 年前

    $array = array('a' => 'apple' , 'c' => 'cat', 'ar' => array('d' => 'dog', 'e' => 'elephant'));
    

    输出:

    Array
    (
        [a] => apple
        [c] => cat
        [ar] => Array
            (
                [d] => dog
                [e] => elephant
            )
    
    )
    

    function upper($str){
      return strtoupper($str);
    }
    
    $array_upper = array_map('upper', $array);
    

    但它似乎不适用于嵌套数组,因为它的结果如下:

    Array
    (
        [a] => APPLE
        [c] => CAT
        [ar] => ARRAY
    )
    

    Array
    (
        [a] => APPLE
        [c] => CAT
        [ar] => ARRAY
            (
                [d] => DOG
                [e] => ELEPHANT
            )
    
    )
    

    试用 array_walk array_walk_recursive print_r(...) 将数组结果返回到 1

    所以基本上如何将回调函数应用到可以嵌套到n级的嵌套数组。这应该很容易,但我遗漏了一些东西:(

    1 回复  |  直到 16 年前
        1
  •  2
  •   Tom Haigh    16 年前

    array_walk_recursive() 应该可以,但它会修改传入的数组并返回bool,这就是为什么 1

    请注意,您需要确保作为回调传递的函数也将第一个参数(数组元素值)作为引用进行修改,而不是返回修改后的值。(不像 array_map() ),例如。

    function upper(&$str){
        $str = strtoupper($str);
    }
    
    推荐文章