[RESOLU] Eliminer les doublons dans une chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Eliminer les doublons dans une chaine

par Aureusms » 30 sept. 2008, 23:10

C'est vrai c'est un peu flou ton truc :

Pour compter le nombre d'entrée dans ta tableau utilises comme te l'a dis guilt92 la fonction count($champ);

Si tu veuix tester si la valeur existe avant de la rentrer dans ton tableau utilise d'abord la fonction if() combiné avec in_array() puis array_push() :
$valeur ="[email protected]";
if (!in_array($valeur,$champ)) array_push($champ,$valeur);
Pour ton exemple, je verrais ainsi tout combiné :
$champ = array();
foreach ($_POST["email"] as $valeur)
{
if (!in_array($valeur,$champ)) array_push($champ,$valeur);
}
$nombre_entree_avant = count($_POST["email"];
$nombre_entree_apres = count($champ);

par guilt92 » 30 sept. 2008, 11:51

Seulement il faudrait boucler pour incrémenter le array ?
Il faudrait compter aussi le nombre d'entré en entrée et au final afin de lancer éventuellement une action sur chaque entrée au final.
Je ne suis pas sur de comprendre ces questions.

Pas besoin de boucler, la fonction array_unique traite tout le tableau.
Pour compter le nombre d'entrée tu peux utiliser la fonction count() avant et après le traitement par array_unique().

Enfin, pour parcourir les éléments d'un tableau pour lancer une action dessus tu peux utiliser le foreach
Exemple
foreach($result as $email)
{
    echo "J'envoie un mail à : ".$email."<br/>";
}
Tu peux aussi le faire avec une boucle while ou for mais il faudra surement réorganiser tes index dans ce cas, parce que avec la suppression des doublons certaines valeurs n'existe plus...

par Invité » 30 sept. 2008, 11:03

oui effectivement je me suis trompé, le séparateur sera toujours ;

avec explode j'en suis la :

Code : Tout sélectionner

<input type="text" name="email" value="[email protected];[email protected],[email protected]" />

$champ = $_POST["email"];
$champ = explode(";", $champ);

$result = array_unique($champ);

Seulement il faudrait boucler pour incrémenter le array ?
Il faudrait compter aussi le nombre d'entré en entrée et au final afin de lancer éventuellement une action sur chaque entrée au final.

Avec une boucle while cela serait possible ?

par guilt92 » 30 sept. 2008, 10:38

Bonjour,

Regardes du coté de la fonction explode() qui te permet de transformer une chaine de caractère en tableau selon un séparateur.
Par contre il faudrait un séparateur qui soit toujours le meme (; par exemple) ca serait plus simple.

Eliminer les doublons dans une chaine

par Invité » 30 sept. 2008, 07:50

Bonjour,

Comme dit dans le sujet je voudrais éliminer les doublons grasse à array_unique dans une chaine contenant des adresse email tirés d'un champ input.

Voila le champ :
Mon problème c'est comment découper le contenu de mon input pour construire mon tableau (array) ?

Pouvez-vous me guider ?
Merci