[PHP] Probleme de tableau (Array)

Résolu
Bonjour a tous !

Voila j'ai un problème depuis quelques jours que je n'arrive pas a résoudre, et je ne vois même pas où est le problème... =/

J'ai deux fichiers texte contenant une liste de pseudo, le fichier A contient 10 pseudos
pseudo1
pseudo2
pseudo3
...
Le fichier B en contient 6.
Je veux faire afficher sur ma page les pseudos qui ne sont pas présent dans le fichier B.
Voila le code :

<?
$liste_membre_today = array();   //declaration du futur tableau
$liste_membre = file("../data/liste_membre.txt"); //creation du tableau
$liste_membre_ok = file("../data/verif/23-11-07.txt"); //creation du tableau
foreach($liste_membre_ok as $membre_ok){ // le fichier B contenent d'autres 
$membre_ok = explode(";:",$membre_ok); // informations avec le pseudo, je fais
array_push($liste_membre_today,$membre_ok[0]);// un explod pour créer un tableau 
} // seulement avec  les pseudos du fichier B

print_r($liste_membre); //j'affiche pour vérifier le sableau
echo "<br>";
print_r($liste_membre_today); //j'affiche pour vérifier le sableau
echo "<br><br>"; 
///////////

foreach($liste_membre as $membre_check){
if(in_array($membre_check,$liste_membre_today)==false){
echo "<br>$membre_check non trouvé";
}
}
?>


Et quand je fais ça, tout les pseudos sont affiché a chaque fois. =(

Alors que quand je fais le bout de code avec la fonction "in_array" avec des tableaux que je viens de créer a la main cela marche parfaitement. Cela doit donc venir de mes tableaux générés a partir des fichiers ?
ou ci vous avez une meilleur solution !

j'espère ne pas avoir été trop confus et en vous remerciant d'avance merci :)
Configuration: Windows XP
Firefox 2.0.0.9

8 réponses

  1. ca marche super !! Grand merci a vous, je relirais attentivement votre code pour faire une comparaison, encore merci pour votre patience
    merci Bonne journée !! ;)
    1. Essayes comme ça:

      j'ai modifié les noms de certains array pour qu'ils soient plus "parlants"

      Es tu sur que le séparateur entre le pseudo et la suite dans B soit bien ;:

      <?php
      $liste_pseudos_membre_ok = array();   //declaration du futur tableau
      $liste_membre = file("../data/liste_membre.txt"); //creation du tableau A
      $liste_membre_ok = file("../data/verif/23-11-07.txt"); //creation du tableau B
      
      foreach($liste_membre_ok as $ligne){
      	 // le fichier B contenant d'autres  informations avec le pseudo, je fais  un explod pour créer un tableau 
      	$array_ligne = explode(";:",$ligne); 
      	$liste_pseudos_membre_ok[]=$array_ligne[0]); // on empile les pseudos dans le nouvel array  seulement avec  les pseudos du fichier B
      } 
      echo "<pre>Tableau A:<br>"; // pour affichage plus lisible
      print_r($liste_membre); //j'affiche pour vérifier le tableau A
      echo "<br>Tableau pseudos liste B:<br>";
      print_r($liste_pseudos_membre_ok); //j'affiche pour vérifier le tableau des pseudos du B
      echo "<br><br>"; 
      //comparaison
      
      $array_3=array_diff($liste_membre,$liste_pseudos_membre_ok); // attention à l'ordre des array
      print_r($array_3);
      echo "</pre>";
      ?>
      
      1. Oui le fichier B a plusieur infos (d'où l'explod), et là où est le probleme c'est que dans le fichier A il n'y a que les pseudos, donc pas besion d'explod.
        Alors j'ai bien mes deux array "classiques" je vois vraiment pas d'où vien le probleme =/

        ps: encore merci pour votre aide.
        1. Salut,

          il me semble lire plus haut que le fichier B contient d'autres infos que le pseudo

          en est-il de même dans le fichier A ?

          Il faut que tu fasses ta boucle pour explode et isoler le pseudo dans les deux fichiers et ensuite tu fais array_diff sur les array contenant seulement les pseudo.

          apparemment les clefs sont conservées alors tu dois pouvoir reconstruire les infos complémentaires
          1. voila, j'ai testé le code et cela marche bien, j'avais déjà fait le test moi même, c'est vrais ça marche, mais des que j'utilise les tableaux qui on été généré a partir des fichiers txt, cela ne marche plus =s et c'est là que je seche.
            merci.
            1. salut,

              un petit exemple qui marche chez moi:

              <?php
              $array1=array("a","b","d","c");
              $array2=array("d","a");
              $array_3=array_diff($array1,$array2); // attention à l'ordre des array
              print_r($array_3);
              ?>
              
              1. Bonjour Alain42, j'ai effectivement commencer au debut par cette fonction "array_diff()" mais j'avai le meme réultat =/
                1. Bonjour,

                  et si tu essayait en faisant un array_diff(...) ou array_diff_assoc(...) entrer les deux array ?

                  vas voir sur Google comment faire