Ho un set di dati:
id | name | parentid
------------------------
1 | parent | 0
2 | child | 1
3 | child | 1
4 | parent | 0
5 | child | 4
6 | subchild | 5
7 | child | 4
Che posso mappare a una gerarchia che assomiglia a:
1 parent
2 |-- child
3 |-- child
4 parent
5 |-- child
6 |-- subchild
7 |-- child
Al momento, sto usando una funzione ricorsiva che controlla i bambini, ma questo è molto lento.
function dothings(currentid) {
//do stuff for item
//check if anything has a parentid of currentid
if (let children = checkforchildren(currentid) > 0) {
foreach(children as child) {
dothings(child['id']);
}
}
}
Esiste una best practice quando si lavora con dati che devono essere mappati in un array arbitrariamente profondo?
(Se è importante, sto usando MySQL e PHP per gestirlo. Posso fornire più informazioni specifiche per il mio caso d'uso, se necessario, ma sto cercando una best practice qui, non solo il debugging di ottimizzazione .)