Ho una serie di oggetti in una gerarchia. C'è un nodo "root" in alto e che ha nodi figli, che a loro volta hanno nodi figli ecc. Sto provando a salvare questa struttura in un DB usando il modello del set nidificato, dove ogni "lato" di ciascun nodo è numerato per definire la gerarchia, come in Managing Hierarchical Data in MySQL:PHP RecursiveIteratorIterator e set nidificati
alt text http://dev.mysql.com/tech-resources/articles/hierarchical-data-4.png
il mio problema è il calcolo dei valori di sinistra e destra. In genere utilizzo RecursiveIteratorIterator per scorrere la gerarchia, ma non riesco a calcolare come calcolare i numeri senza ricorrere a una funzione ricorsiva che analizza una variabile di indice per riferimento.
Qualche idea?
è probabilmente di alcuna utilità, ma questo è il codice (errato) attualmente ho:
$iterator = new RecursiveIteratorIterator(
new Node_List(array($root)),
RecursiveIteratorIterator::SELF_FIRST);
$i = 0;
foreach ($iterator as $node) {
$node->left = ++$i;
$node->right = ++$i;
}
Come si può vedere, che darebbe qualcosa di simile:
Node
Node
Node
Sinistra e giusti valori di:
Node (1, 2)
Node (3, 4)
Node (5, 6)
quando dovrebbero essere:
Node (1, 6)
Node (2, 3)
Node (4, 5)