Xwab
Форумыnavigate_nextПрограммирование на PHP

Обход многомерного массива
Сообщения
Replikon

Как можно обработать функцией каждый элемент многомерного массива?
Мерность массива не известна.


__________
посл.ред. 28 Сен 2010, 20:37; всего 2 раз(а) 28 Сен 2010, 20:24
Ricardo Brandino

Фильтр на что?

28 Сен 2010, 20:26
Replikon

Sendkler, не важно. Нужно обработать функцией каждый элемент многомерного массива.

28 Сен 2010, 20:29
Ricardo Brandino

Replikon, циклом элементы перебери да и все. А там что хочешь с ними делай хоть фильтруй, хоть что

28 Сен 2010, 20:32
Replikon

Sendkler, но мне не известна мерность массива. Это может быть 2 мерный массив, а может быть и 22 мерный. То есть массив может быть такого рода
$massiv["1"]["2"]["3"]["4"]["5"]["6"]["n"]...
И нужно обработать функцией каждый элемент даже самых глубоких массивов.
Если бы мне была известна его мерность, то никаких проблем, а так...

28 Сен 2010, 20:35
Fashion

function a($in){
if(is_array($in)){
return array_map('b',$in);
}else{
return b($in);
}
}

function b($in){
if(is_array($in)){
return a($in);
}else{
return htmlspecialchars($in);
}
}

+ сюда можно добавить 2 необязательный параметр, чтобы дважды не проверять переменную, является ли она массивом

28 Сен 2010, 20:38
Replikon

Fashion, о, спасибо.
Сделаю не много не так, но ты подал мне идею.

28 Сен 2010, 20:46
Fashion

ну так поделтсь ею с нами)

28 Сен 2010, 20:48
Replikon

Fashion, рекурсия, однако.

28 Сен 2010, 21:08
wapmorgan

function array_multimap($callback_function, $array)
{
foreach($array as $array_name => $array_value)
{
if(is_array($array_value))$array[$array_name] = array_multimap($callback_function, $array_value)
else $array[$array_name] = $callback_function($array_value);
}

return $array;
}
Использовать
print_r(array_multimap('intval', array('5dasasd', '6', array('2a'))));
===>>>
Array
(
    [0] => 5
    [1] => 6
    [2] => Array
        (
            [0] => 2
        )

)

28 Сен 2010, 21:16
Ответить на тему