Het lijkt erop dat je de $link-variabele binnen de foreach-lus wijzigt, dus je voegt item1 toe aan $link, loopt door zijn subitems en keert terug naar de eerste iteratie en voegt item2 toe aan de variabele...
vervang dit
$link .= "/".$category['url_nl'];
met
$insidelink = $link . "/".$category['url_nl'];
(en verander de resterende $link in de lus in $insidelink)
Toevoegen:Dit geldt ook voor $startingLevel. Wijzig het niet, gebruik +1 inline:
echo "<li>".$start." - ".$startingLevel +1.
"<a href='$link'>{$category['menu_nl']}</a> ($link)</li>\n";