Mammouth du PHP |
1609 Messages
24 juin 2015, 17:11
J'en pense que le code ne fait pas ce que tu énonces !

Et j'ai dit une bêtise dans mon post précédent.
Ce que le test suivant permet de faire c'est de savoir qu'un étudiant du fichier A n'existe pas dans B et donc cela permettrait de stocker ces dits étudiants dans un troisième fichier.
/* si l'élève n'existe pas dans B on saute la ligne */
if(!isset($students_b[$student_id]))
continue ;
Toi tu veux stocker dans un troisième fichier les étudiants présents dans B mais pas dans A.
Or la boucle ne passe jamais sur ces étudiants puisqu'elle boucle sur les étudiants de A.
Il faudrait donc ajouter une nouvelle boucle sur les étudiants de B et quand l'étudiant n'est pas présent dans A l'ajouter dans un tableau, disons $students_d comme le fichier va s'appeler D.csv.
$students_d = array();
foreach($students_b as $student_id => $student_b)
{
/* si l'élève n'existe pas dans A on l'ajoute dans D */
if(!isset($students_a[$student_id]))
$students_d[] = $student_b;// inutile de mettre l'id en index car l'index ne sera jamais utilisé
}
Pour ce qui est de l'enregistrement c'est ok. Tu pourrais éventuellement faire une fonction pour ça.
A noter : la reconversion des , en . sur les notes n'est pas faite dans certains cas. Dans le cas des étudiants présents dans A mais pas dans B étant donné qu'on saute la ligne sans plus de traitement. Et maintenant dans le cas des étudiants présents dans B mais pas dans A.
Donc tu peux soit ajouter les traitements nécessaires pour faire ces conversions quand elles ne sont pas faites. Soit tu fais la conversion , vers . uniquement pour les comparaisons. Et je pense que personnellement je choisirai cette deuxième alternative.
Développeur web depuis + de 20 ans