[PHP] Probleme de tableau (Array)
Résolu
slasher404
Messages postés
11
Statut
Membre
-
slasher404 Messages postés 11 Statut Membre -
slasher404 Messages postés 11 Statut Membre -
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 :
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 :)
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 :)
A voir également:
- [PHP] Probleme de tableau (Array)
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
8 réponses
Bonjour,
et si tu essayait en faisant un array_diff(...) ou array_diff_assoc(...) entrer les deux array ?
vas voir sur Google comment faire
et si tu essayait en faisant un array_diff(...) ou array_diff_assoc(...) entrer les deux array ?
vas voir sur Google comment faire
Bonjour Alain42, j'ai effectivement commencer au debut par cette fonction "array_diff()" mais j'avai le meme réultat =/
salut,
un petit exemple qui marche chez moi:
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);
?>
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.
merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
Alors j'ai bien mes deux array "classiques" je vois vraiment pas d'où vien le probleme =/
ps: encore merci pour votre aide.
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 ;:
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>";
?>