je le code suivant (je sais que ce code n'est pas optimisé mais pas pour la discussion):Créer tableau de répertoires hiérarchiques en 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;
}
Fonction retourne ce tableau:
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)
)
)
mais comment dois-je modifier le code
else {
$this->tmp[$category->parent][$category->id] = array();
// ^^^^^^^^^^^^^^^^^^^^^^ (this bit)
}
Pour fusionner array[3]
-array[2][3]
par exemple (parce que array[3]
est un sous-répertoire de array[2]
et array[2]
est un sous-répertoire de array[0][2]
), donc, je dois faire ce (quand je ne connais pas le niveau de sous-répertoires):
array (
0 => array (
1 => array
2 => array (
3 => array (
4 => array
5 => array
)
)
)
)
Je ne sais pas exactement comment vous déterminez ce qui est censé être un sous-répertoire de qui? Pouvez-vous expliquer cela un peu plus? – Chris
Oui, bien sûr. J'ai la table avec des colonnes: 'id', 'name', 'parent'. Il y a aussi d'autres colonnes mais cela ne nous intéresse pas. Ainsi, 'parent' est la colonne qui contient 'id' de la catégorie parente pour la catégorie courante et est zéro si la catégorie est root. – purple