Scusa forse non ho capito la domanda, cerco di chiarire...
Il problema che incontro forse è proprio quello, non so come far capire a php che se incontra un 1001000 dopo 1000000 deve aprire un <ul> e chiuderlo prima di incontrare un 2000000.
Analogamente ad un livello inferiore se incontra un 1001001 dopo 1001000 e chiuderlo prima di 1002000.

Grazie mille per il tempo che mi dedichi e la pazienza,
Francesco.