У меня есть следующий код (я знаю, что этот код не оптимизирован, но это не для обсуждения):Создание массива иерархических каталогов в PHP
function select_categories($cat_id)
{
$this->db = ORM::factory('category')
->where('parent', '=', $cat_id)
->find_all();
foreach ($this->db as $num => $category)
{
if($category->parent == 0)
{
$this->tmp[$category->parent][$category->id] = array();
}
else {
$this->tmp[$category->parent][$category->id] = array();
}
$this->select_categories($category->id);
}
return $this->tmp;
}
Функция возвращает этот массив:
array(3) (
0 => array(2) (
1 => array(0)
2 => array(0)
)
2 => array(1) (
3 => array(0)
)
3 => array(2) (
4 => array(0)
5 => array(0)
)
)
Но как я должен изменить код
else {
$this->tmp[$category->parent][$category->id] = array();
// ^^^^^^^^^^^^^^^^^^^^^^ (this bit)
}
слить array[3]
к array[2][3]
, например, (потому что array[3]
является подкаталог array[2]
и array[2]
является подкаталог array[0][2]
), поэтому мне нужно, чтобы сделать это (когда я не знаю, уровень подкаталогов):
array (
0 => array (
1 => array
2 => array (
3 => array (
4 => array
5 => array
)
)
)
)
Я не совсем уверен, как вы определяете, какой из них является подкаталогом? Не могли бы вы объяснить это немного больше? – Chris
Да, конечно. У меня есть таблица со столбцами: 'id', 'name', 'parent'. Также есть несколько других столбцов, но мы этого не интересуем. Итак, «parent» - это столбец, который содержит «id» родительской категории для текущей категории и равен нулю, если категория является корнем. – purple