Как можно обработать функцией каждый элемент многомерного массива?
Мерность массива не известна.
Sendkler, не важно. Нужно обработать функцией каждый элемент многомерного массива.
28 Сен 2010, 20:29Replikon, циклом элементы перебери да и все. А там что хочешь с ними делай хоть фильтруй, хоть что
28 Сен 2010, 20:32Sendkler, но мне не известна мерность массива. Это может быть 2 мерный массив, а может быть и 22 мерный. То есть массив может быть такого рода
$massiv["1"]["2"]["3"]["4"]["5"]["6"]["n"]...
И нужно обработать функцией каждый элемент даже самых глубоких массивов.
Если бы мне была известна его мерность, то никаких проблем, а так...
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 необязательный параметр, чтобы дважды не проверять переменную, является ли она массивом
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
)
)