[RESOLU] Array supprimer doublons

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] Array supprimer doublons

Re: Array supprimer doublons

par Jefekoi » 22 mai 2017, 06:13

Bonjour,

Ok merci patron ;)
Bonne semaine à toi.

Re: Array supprimer doublons

par @rthur » 21 mai 2017, 22:48

Il est préférable de mettre ton break au niveau du traitement plutôt qu'au moment de la restitution car ça sera + rapide à générer pour PHP (quelques millisecondes, ça ne se verra pas bcp sur 200 lignes, mais ça se verra avec bcp + de lignes)

Re: Array supprimer doublons

par Jefekoi » 21 mai 2017, 06:08

Bonjour,

Petite question en passant, si je veux afficher uniquement les dix premières lignes du résultat , faut t-il faire une condition pour sortir de la boucle ou je mémorise la totalité pour faire un "for" après ?

Ce n'est pas que je ne sache pas le faire mais c'est plutôt un conseil d'expert que j'ai besoin .

Merci

Ps: dans le style comme ça :

Code : Tout sélectionner

foreach ($tablo_final as $libelle => $nombre) $compteligne++; if ($compteligne>=10){ break;} echo $libelle.':'.$nombre."<br />\n";

Re: Array supprimer doublons

par Jefekoi » 20 mai 2017, 19:02

Génial, c'est tout ce que je voulais ...

Quand je regarde ton programme je me dis "c'était si simple" (5 lignes) je me suis cassé la tête pour ça :)

On voit bien les connaisseurs :)

Merci beaucoup c'est sympa ..

Je laisse le topic en non réglé (si jamais je voudrais revenir sur un point) ...

Re: Array supprimer doublons

par @rthur » 20 mai 2017, 12:03

Voici comment je l'aurait fait ci-dessous.
J'ai mis des commentaires mais n'hésites pas à poser des questions si il y a une ligne ou une fonction que tu ne comprends pas
<?php
$data = file_get_contents("infos/".$annee."/".$mois.'/lesmots.txt');

foreach(explode("\n", $data) as $ligne) { // On parcours chaque ligne du fichier
	// On met dans la variable $libelle la partie avant ":" et dans $nombre la 2eme partie
	list($libelle, $nombre)=explode(':', $ligne); 
	// On crée un tablo $tablo_final qui aura comme clé le libelle
	// Comme une clé dans un tableau est unique, chaque valeur en doublon va remplacer la précédente
	$tablo_final[$libelle]=$nombre; 
}

// On affiche le résultat
foreach ($tablo_final as $libelle => $nombre) echo $libelle.':'.$nombre."<br />\n";

Re: Array supprimer doublons

par Jefekoi » 20 mai 2017, 08:30

J'ai réussi à faire ça pour qu'il coupe les deux variables

Je ne suis pas un expert désolé .


$data = file_get_contents("infos/".$annee."/".$mois.'/lesmots.txt');
$file = "infos/".$annee."/".$mois.'/lesmots.txt'; // nom de mon fichier
$fp = fopen($file,'rb'); // ouverture du fichier
$tab = array(); // initialisation d'un tableau
while (!feof($fp)){ // tant que la lecture n'arrive pas au bout du fichier
$ligne = fgets($fp, 1024); // stocke le contenu de la ligne dans une variable
$ligne = trim(substr($ligne,0,36));
$taille = strlen($ligne); // calcule la taille de la chaine en nbr de caractère
if ($taille != 0){// si la taille de la chaine est différente de 0
$tab[]= explode(":",$ligne); // stocke le contenu dans un tableau
}} fclose($fp); // ferme le fichier
$nbr_Enregistrement = count($tab); // nombre d'enregistrements dans le tableau
sort($tab); // tri par ordre alphabétique
while (list($key, $value) = each($tab)) {
    echo $value[0]."<br />";
}

Array supprimer doublons

par Jefekoi » 20 mai 2017, 07:05

Bonjour,

Je fais un peu de php mais pas assez pour comprendre les array.

J'ai mal au crane à force de chercher pourtant je suis patient mais là ...

J'ai un fichier txt avec à l’intérieur ceci :

robots:123
homogeneisates:894
dico:7366
robots:589
.. Plus de 200 lignes comme ça


Je voudrais supprimer les doublons comme dans l'exemple (robots:589 )
Soit supprimer le premier "robots:123" soit le deuxième "robots:589" peu importe.

Naturellement je ne connais pas d'avance les lignes qui vont s'enregistrer

C'est uniquement supprimer la ligne première variable en double( comme ici ex : robots:589)

Merci à vous.