J'ai un ensemble d'objets dans une hiérarchie. Il y a un nœud "racine" supérieur et qui a des nœuds enfants, qui ont à leur tour des nœuds enfants, etc. J'essaie de sauvegarder cette structure dans une DB en utilisant le modèle de jeu imbriqué, où chaque "côté" de chaque nœud est numéroté pour définir la hiérarchie, comme dans Managing Hierarchical Data in MySQL:PHP RecursiveIteratorIterator et les ensembles imbriqués
alt text http://dev.mysql.com/tech-resources/articles/hierarchical-data-4.png
Mon problème calcule la gauche et à droite. J'utilise généralement RecursiveIteratorIterator pour itérer sur la hiérarchie, mais je ne peux pas calculer comment calculer les nombres sans recourir à une fonction récursive qui analyse une variable d'index par référence.
Des idées?
Il est probablement inutile, mais c'est le code (incorrect) J'ai actuellement:
$iterator = new RecursiveIteratorIterator(
new Node_List(array($root)),
RecursiveIteratorIterator::SELF_FIRST);
$i = 0;
foreach ($iterator as $node) {
$node->left = ++$i;
$node->right = ++$i;
}
Comme vous pouvez le voir, cela donnerait quelque chose comme ceci:
Node
Node
Node
gauche et valeurs de droite:
Node (1, 2)
Node (3, 4)
Node (5, 6)
Quand ils devraient être:
Node (1, 6)
Node (2, 3)
Node (4, 5)