Это не полная функция для вас, но она добавляет форматирование пространства в выводе массива, чтобы обозначить глубину, достигнутую для элементов в многомерном массиве без использования каких-либо глобальных переменных.
Надеюсь, это поможет вам уточнить ваше собственное решение.
Обновлено, чтобы отражать возврат вывода в виде строки вместо вывода из функции
function Process_Array($arr, $depth) {
$retVal = '';
foreach($arr as $k => $v) {
for($i = 0; $i < $depth; $i++)
$retVal .= ' ';
$retVal .= $k . ': ';
if(is_array($v))
$retVal .= '<br>' . Process_Array($v, $depth + 1);
else
$retVal .= $v . '<br>';
}
return $retVal;
}
$test = array(
'test1',
'test2',
array(
'test3',
array(
'test4',
'test5'
),
'test6'
),
'test7'
);
echo Process_Array($test, 0);
Вывод:
0: test1
1: test2
2:
0: test3
1:
0: test4
1: test5
2: test6
3: test7