помогите мне построить динамическую функцию для отображения любого количества подкатегорий. На данный момент существует только три уровня категории. пожалуйста, помогите мне создать код для обработки любого количества подкатегорий для одного родителя и для отображения его в виде хлебных крошек.
Ниже приведена функция индекса codeigniter, получающая все категории из таблицы категорий
<code>public function index() {
$dbdata['table'] = 'categories';
$dbdata['select'] = array('id', 'parent', 'name');
$dbdata['where'] = array('type' => 'post');
$records = $this->ot->get_records($dbdata);
$category = array();
foreach ($records as $record) {
if ($record['parent']) {
$parent = $this->get_parent($record['parent'], $records);
if ($parent['parent']) {
$super_parent = $this->get_parent($parent, $records);
$category[] = $super_parent['name'] . ' > ' . $parent['name'] . ' > ' . $record['name'];
} else {
$category[] = $parent['name'] . ' > ' . $record['name'];
}
} else {
$category[] = $record['name'];
}
}
echo '
<pre>';
print_r($records);
echo '<hr>';
print_r($category);
echo '
';
}
защищенная функция get_parent ($ parent, $ records) {
$ key = array_search ($ parent, array_column ($ records, 'id'));
вернуть $ records [$ key];
}
Полученный результат:
Array
(
[0] => Array
(
[id] => 1
[parent] => 0
[name] => Category 1
)
[1] => Array
(
[id] => 2
[parent] => 1
[name] => Category 2
)
[2] => Array
(
[id] => 3
[parent] => 2
[name] => Category 3
)
[3] => Array
(
[id] => 4
[parent] => 0
[name] => Category 4
)
[4] => Array
(
[id] => 5
[parent] => 4
[name] => Category 5
)
[5] => Array
(
[id] => 6
[parent] => 0
[name] => Category 6
)
[6] => Array
(
[id] => 7
[parent] => 0
[name] => Category 7
)
[7] => Array
(
[id] => 8
[parent] => 0
[name] => Category 8
)
[8] => Array
(
[id] => 9
[parent] => 0
[name] => Category 9
)
[9] => Array
(
[id] => 10
[parent] => 0
[name] => Category 10
)
[10] => Array
(
[id] => 11
[parent] => 0
[name] => Category 11
)
[11] => Array
(
[id] => 12
[parent] => 0
[name] => Category 12
)
)
Array
(
[0] => Category 1
[1] => Category 1 > Category 2
[2] => Category 1 > Category 2 > Category 3
[3] => Category 4
[4] => Category 4 > Category 5
[5] => Category 6
[6] => Category 7
[7] => Category 8
[8] => Category 9
[9] => Category 10
[10] => Category 11
[11] => Category 12
)