Du hast nicht ganz Unrecht was die verschachtelung und die unübersichtlichkeit betrifft. Ich finde es immer ganz sinnvoll zu googeln und dann zu sehen wie andere das gelöst haben. Zum Thema Menüerstellung mittels PHP wird es sicherlich reichlich Stoff geben.
Bei Deinem Ansatz sollte es doch eigentlich funktionieren wenn Du Deine "Ausgabeschleife" ein wenig umbaust.
foreach ($chapter as $key => $value)
{
$id = '';
if ($key == $kapitel) //an der Stelle weisst Du doch das die Seite die angezeigt werden soll genau diesem ausgegebenem Kapitel entspricht. Also muss hier dann auch die Ausgabe des Submenüs erfolgen. Oder hab ich Deinen Code nicht richtig gelesen?Ansonsten hier rein:
print deinCodefürDasSubemnü
{
$id = "active";
}
print "<li><a id='$id' href='$myself?kapitel=$key'>$value</a></li>\n";