[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. Bonjour,

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

    vas voir sur Google comment faire
    0
    1. Bonjour Alain42, j'ai effectivement commencer au debut par cette fonction "array_diff()" mais j'avai le meme réultat =/
      0
      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);
        ?>
        
        0
        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.
          0
          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
            0
            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.
              0
              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>";
                ?>
                
                0
                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 !! ;)
                  0