Garder en mémoire la liste de quel côté ? Du côté du PC de l'utilisateur, ou du côté du serveur ?
Le code n'est pas facile à lire, non seulement parce qu'il est mal indenté, mais en plus parce que ce n'est pas comme ça qu'il faut écrire un programme en PHP.
Ici, on a une sorte de HMTL qui contient du PHP.
Alors qu'il faudrait mieux avoir du PHP qui génère une page HTML dynamiquement.
D'une manière générale, les listbox sont souvent traitées du côté du poste client avec du javascript, parce que c'est le plus simple.
Mais s'il faut utiliser des listbox ayant des contenus variables, alors on est obligé d'interroger le serveur, et cela se fait par la technique Ajax, car on ne va pas attendre que l'utilisateur ait appuyé sur le bouton de validation du formulaire pour modifier le contenu de la listbox, ce qui se produirait trop tardivement.