attention require n'est chargé qu'en début de script, et comme le dit l'aide de php.net, même si tu mets un require dans un test, le fichier sera inclus dans TOUT les cas. De plus ça ne sert à rien de mettre un require dans une boucle.
Par contre un include copie, en gros, le contenu du fichier dans le script à l'emplacement du include.