array_map_recursive для php

В php, к сожалению, не имеется функции array_map которая могла бы рекурсивно пробежаться по массиву. Но есть кастомное решение, которое нормально работает:

function array_map_recursive($func, $array) {
    foreach ($array as $key => $val) {
        if ( is_array( $array[$key] ) ) {
            $array[$key] = array_map_recursive($func, $array[$key]);
        } else {
            $array[$key] = call_user_func( $func, $val );
        }
    }
    return $array;
}
  • 01.03.2011
  • php
  • http://twitter.com/ArtemTaranoff Artem Taranoff

    Мм… А чем Вас не устроила array_map (http://php.net/manual/en/function.array-map.php)?

  • http://sergebezborodov.com Serge Bezborodov

    array_map перебирает массив только на один уровень, вложенные массивы не задействуются
    array_map_recursive проходит абсолютно по всем элементам, которые есть в массиве (в т.ч. вложенные).
    Из практики — мне нужно было преобразовать кодировку в многомерном массиве параметров для POST данных

  • http://www.salongsvadba.ru/ Лиза

    Спасибо, очень интересная и подробная статья