я иметь иерархическую структуру в массиве, как это:иерархическая структура в массиве, рекурсии в PHP
item root 1
- item child 1
-- item child 2
item root 2
- item child
я хочу получить:
1. item root 1
1-1. item child 1
1-1-1. item child 2
2. item root 2
2-1. item child
Моя функция в дереве сборки
function printTree($data, $level = 0, $counter = 1) {
foreach ($data as $item) {
if ($item['parent_id'] == 0) {
$addr = $counter . '. ' . $item['address'];
$counter++;
}
else if ($item['parent_id'] != 0) {
$addr = $counter . '-' . $counter . ' ' . $item['address'];
} else {
$addr = $item['address'];
}
global $result;
$result['aaData'][] = Array(
$addr,
$item['mask'],
$item['status'],
$item['subnets'],
$item['therange'] = $item['start'] . ' - ' . $item['end'],
$item['type'],
$item['node'],
$item['id'],
);
if (isset($item['children'])) {
printTree($item['children'], $level + 1, $counter + 1);
}
}
return $result;
}
Но мой результат неверен, элемент корневого элемента считается нормальным, но неправильный ребенок, как я могу это исправить? нужна помощь, спасибо!
Похоже, что я, возможно, неправильно понял вопрос. позвольте мне немного переписать код. извините – loushou
под редакцией. теперь использует счетчик вместо $ item ['id'] – loushou