Отображение иерархического многомерного массива с родительской дочерней нумерацией

У меня есть многомерный массив, который имеет отношения родитель-потомок.

Я хочу отобразить это как список числовых значений, представляющих их родителей в соответствующем порядке.

Array
(
[0] => Array
(
[name] => Category 1
[id] => 6
[children] => Array
(
[0] => Array
(
[name] => Category 2
[id] => 7
[children] => Array
(
[0] => Array
(
[name] => cricket1
[id] => 19
[children] => Array
(
[0] => Array
(
[name] => cricket2
[id] => 21
[children] =>
)

)

)

)

)

[1] => Array
(
[name] => another category
[id] => 15
[children] => Array
(
[0] => Array
(
[name] => new 1
[id] => 18
[children] =>
)

)

)

)

)

[1] => Array
(
[name] => Category 3
[id] => 8
[children] => Array
(
[0] => Array
(
[name] => new category
[id] => 11
[children] =>
)

)

)

[2] => Array
(
[name] => Sazzad
[id] => 9
[children] => Array
(
[0] => Array
(
[name] => Mahmud
[id] => 10
[children] =>
)

)

)

)

Я хочу показать этот массив, как указано ниже:

1. Категория 1
1.1 Категория 2
1.1.1 крикет1
1.1.1.1 крикет2
1.2 другая категория
1.2.1 новый 1
2. Категория 3
2.1 новая категория
3. Саззад
3.1 Махмуд

Как я могу достичь этой системы нумерации с использованием PHP?

Заранее спасибо.

1

Решение

Вы можете использовать простую рекурсивную функцию:

function makeOneLevelArray($in, &$out, $prefixLevel = '') {
$level = 1;
foreach ($in as $v) {
$out[] = $prefixLevel . $level . ' ' . $v['name'];
if (!empty($v['children'])) {
makeOneLevelArray($v['children'], $out, $prefixLevel . $level . '.');
}
$level++;
}
}

$outputArray = array();
makeOneLevelArray($inputArray, $outputArray);
print_r($outputArray);

демонстрация

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]