@Chaussette : comme suggéré précédemment, je pense qu'il faudrait plutôt que tu parcours les deux fichiers indépendamment l'un de l'autre pour obtenir tous les noms dont tu as besoin et ensuite seulement commencer à les trier
@carte-sd : c'est effectivement un problème dans l'expression de la condition

(enfin pas vraiment un problème puisque sa résolution engendrerait la boucle infinie, mais sa non résolution fait qu'on ne va pas au bout de l'un des fichiers

)
En théorie, la condition de sortie de boucle devrait être lorsque l'on a atteint la fin des deux fichiers :
feof($fp1) && feof($fp2)
On doit donc boucler tant que cette condition est fausse. Cela peut se traduire de deux façon, l'inverse de la condition dans sa globalité, ou l'inverse de chacun des éléments de la condition :
! ( feof($fp1) && feof($fp2) )
!feof($fp1) || !feof($fp2)
Le contraire du ET logique est un OU

. On ne devrait donc pas sortir tant que fichier1 OU fichier2 ne sont pas entièrement lus.
Attention également, en PHP il y a une différence entre les opérateurs AND et &&, ainsi qu'entre OR et || dans la précédence de leur exécution. Les opérateurs && et || sont prioritaires sur les affectations (=, +=, ...) ou l'opérateur ternaire, tandis que AND et OR ne le sont pas. Il est à mon sens préférable d'utiliser les opérateurs && et || (moins explicites qu'en SQL, mais communs à la majorité des langages informatiques) à moins de savoir précisément pourquoi on utilise AND et OR

@Chaussette : comme suggéré précédemment, je pense qu'il faudrait plutôt que tu parcours les deux fichiers indépendamment l'un de l'autre pour obtenir tous les noms dont tu as besoin et ensuite seulement commencer à les trier :)
@carte-sd : c'est effectivement un problème dans l'expression de la condition :) (enfin pas vraiment un problème puisque sa résolution engendrerait la boucle infinie, mais sa non résolution fait qu'on ne va pas au bout de l'un des fichiers :))
En théorie, la condition de sortie de boucle devrait être lorsque l'on a atteint la fin des deux fichiers :
[php]feof($fp1) && feof($fp2)[/php]
On doit donc boucler tant que cette condition est fausse. Cela peut se traduire de deux façon, l'inverse de la condition dans sa globalité, ou l'inverse de chacun des éléments de la condition :
[php]! ( feof($fp1) && feof($fp2) )[/php]
[php]!feof($fp1) || !feof($fp2)[/php]Le contraire du ET logique est un OU :). On ne devrait donc pas sortir tant que fichier1 OU fichier2 ne sont pas entièrement lus.
Attention également, en PHP il y a une différence entre les opérateurs AND et &&, ainsi qu'entre OR et || dans la précédence de leur exécution. Les opérateurs && et || sont prioritaires sur les affectations (=, +=, ...) ou l'opérateur ternaire, tandis que AND et OR ne le sont pas. Il est à mon sens préférable d'utiliser les opérateurs && et || (moins explicites qu'en SQL, mais communs à la majorité des langages informatiques) à moins de savoir précisément pourquoi on utilise AND et OR :)