AFFICHE LES DOUBLONS DANS UNE LISTE

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 11 mars 2006 à 18:05
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 12 mars 2006 à 23:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36489-affiche-les-doublons-dans-une-liste

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 23:34
lol
un litéraire...

Créer une tonne de variables, c'est un peu débile, je penses que tu es d'accord avec moi sur ce point... je vais faire un bench, mais c'est uniquement pour te faire plaisir... Ne te vexe pas, si on dit ça, c'est pour t'aider... (et aussi parcequ'on en a marre de voir des sources de si petite qualité...)
cs_Gibbs Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 12 mars 2006
12 mars 2006 à 23:19
je m'incline devant la science . Je me prosterne devant vous (face devant quand meme) pour vous presenter mes plus plates excuses d'avoir osé presenter une astuce qui m'a rendu un grand service meme si celle ci etait "crade" (moi j'aurais dit "pas élégante" ) mais je ne suis pas à votre niveau de connaissance et j'espere ne pas le devenir.
pour conclure j'avais trouvé cette idée géniale . Bon maintenant est-ce ma faute si la lampe du génie etait eteinte est-ce ma faute si la lumiere de la votre vous eblouis au point de vexer (involontairement cela va de soi) les gens de bonne volonté .
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 mars 2006 à 19:58
Bah tout dépend ce que tu veux parcourir aussi.

Mais moi depuis que je me suis tablé avec les Iterateurs, je trouve ca beaucoup plus joli de faire du bouclage avec de l'objet :)

Je préfère la souplesse à la vitesse de quelques nanosecondes pour le moment lol =)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 mars 2006 à 19:19
"Pourquoi faire une boucle while la dessus ? Sachant que tu dois placer un $i++ dans la boucle ? Pour ca, il existe mieux : for();

<?php
for ( $i=0; $i < count($liste); $i++ ) {
//
}
?>"

et ça ça reste crade, le while est plus rapide que le for, et ça c'est la plus rapide de toutes les solutions :

$i=0;
$nb=count($machin);

while($i<$nb)
{
//code
$i++;
}

la plus "propre" étant celle-ci :

$nb=count($machin);
for($i=0;$i<$nb;$i++)
{
//code
}
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 19:00
tu leurs donne de mauvaises habitudes, et ils vont à leur tour poster des codes comme celui là...
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
12 mars 2006 à 18:55
Salut Gibbs,
Ce que veulent dire les autres et qui est vrai, c'est que
même pour les grands débutants à qui tu penses apprendre quelque chose, tu ne leur rends pas service avec ce code car ce n'est pas du tout un exemple de bonne programmation.
Donc ta bonne volonté est tout à fait honorable mais là, tu ferais mieux d'attendre de t'améliorer avant de poster d'autres sources.
Bonne chance à+
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 mars 2006 à 18:48
Un code crade par définition est un code qui est mal écrit surtout.
C'est pour moi pas tant la facon d'y arriver qui me gène le plus, mais la facon de coder.
Regarde bien :

Tu utilises ca comme code PHP :
<?php
$i = 0 ;
while ( $i < count($liste) ) {
//
}
?>
Pourquoi faire une boucle while la dessus ? Sachant que tu dois placer un $i++ dans la boucle ? Pour ca, il existe mieux : for();

<?php
for ( $i=0; $i < count($liste); $i++ ) {
//
}
?>

Maintenant, autre chose, regarde bien. Tu veux parcourir un tableau. Jusque la pas de problème, mais il existe aussi une fonction toute aussi simple : foreach() !
Voila ce que ca donne :
<?php
foreach ( $liste as $key ) {
//
}
?>

C'est pas plus jolie ca par hasard ?
Tu préfères pas ca à ce que t'as marqué plus haut ?

Voila ce qu'est un code crade. Un vrai code crade c'est un code qui n'exploite pas le potentiel des fonctions de PHP.

Voila voila :)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 17:52
Lol, ammuse toi bien !

si Antho, Fhx, Malam et Grenard faisaient cette fonction, ils auraient tous des méthodes différentes (enfin, pas forcément, mais selon ce que tu dit, oui... mais sur une fonction aussi courte, pas forcément...) et les 4 auraient raison... mais ne feraient pas un code crade !

toi, tu déclares autant de variables que tu as de mots sans doublons ! et ton code ne passe pas le error_reporting E_ALL, alors que les codes de ces 4 programmeurs si, et si je testais, et modifiais un peu le mien, je n'aurais pas non plus de bugs... ce qui prouve que nos codes ne sont pas si crades que ça comparés au tien !

on a des critères pour dire ça d'un code...
cs_Gibbs Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 12 mars 2006
12 mars 2006 à 17:34
Peut etre que je ne comprends pas le php "like a native" mais je retiens :
postulat 1 : un code crade est un code debile .
posttulat 2 :le fait de dire qu'un code est crade signifie su'il est pourri.
si tu prends 10 programmeurs ,tu aura 10 programmes differents pour obtenir le meme resultat , est-ce à dire qu'il y a 9 programmeurs qui codent "crade"

pourquoi faut il que tu dise que ça serai marrant de me voir programmer en C , dommage pour toi je n'ai nullement l'envie de me faire critiquer en C alors que j'ai déja mon overdose par des critiques en php. J'ai seulement mis une astuce sans prétention.
maintenant que je vois vos réactions je vais surement continuer à en poster d'autres dans la rubrique "un code crade mais c'est tres simple"
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 16:45
else if (!in_array($tab3))

est à remplacer par

else if (!in_array($b, $tab3))
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 mars 2006 à 16:37
Je suis désolé mais je ne vois pas où est la difficulté à comprendre ça :

unction array_get_double($tab)
{
$tab2=array();
$tab3=array();
foreach ($tab as $a=>$b)
{
if (!in_array($b, $tab2))
{
$tab2[$a]=$b;
}
else if (!in_array($tab3))
{
$tab3[$a]=$b;
}
}
return $tab3;
}

et comme en plus c'est plus optimisé...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 16:36
lol
parceque selon toi, === provoque une erreur ?
Si oui, alors tu ne code pas strict ! (mais alors pas du tout !)
ça serait marrant de te voir programmer en C...
créer 252 000 variables comme ça, c'est débile, et je t'ai dit pourquoi ton code était pourri ! de plus, mon code fait la même chose que le tien, mais en rangeant les variables dans une liste ! et mon code est parfaitement compréhensible ! je le classerais dans un dossier hello worlds si jamais j'avais voulu l'enregistrer...
cs_Gibbs Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 12 mars 2006
12 mars 2006 à 16:29
if ($niveau === $Debutant AND $pseudo==='Gibbs')
{
$code='crade';
}

ça m'est ==== , mais quand il faut je sais reconnaitre un code faux .:)
Maintenant donnez moi la définition d'un code "crade" .
Est-ce parce que c'est un code que l'on comprends de suite sans réflechir plus de 2s ou est-ce pourquoi faire simple alors que l'on peux faire compliqué .
je remarque qu"il y a une inflation d'egal quand on frappe l'ego :D
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 mars 2006 à 12:18
Salut,

Gibbs > ton raisonnement est erroné je pense. Coucou a proposé une amélioration à ton code qui est crade. Par contre le raisonnement

if [$Niveau de la source == $Débutant) { $code = $crade}...

est faut et génèrera une erreur. J'aurais plutôt mis :

if ($niveau === $Debutant AND $pseudo==='Gibbs')
{
$code='crade';
}

Bon ok je sors ^^
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 mars 2006 à 12:12
if [$Niveau de la source == $Débutant) { $code = $crade}...

if ($code.type===$crade){
$code=amelioration($code);
}
cs_Gibbs Messages postés 4 Date d'inscription mercredi 20 octobre 2004 Statut Membre Dernière intervention 12 mars 2006
11 mars 2006 à 23:42
if [$Niveau de la source == $Débutant) { $code = $crade} , ton code est surement tres interessant pour la beauté d'un codeur experimenté mais totalement incomprehensible par moi , et je n'aime pas utiliser les trucs que je ne comprends pas car mon niveau est débutant .
j'ai mis ça pour le principe.
Pour simplifier le code j'ai mis les variables dans une array , mais en fait j'ai fait ce code car j'avais souvent des fichiers de +1000 lignes de noms differents ou en doubles à une position bien determinées . Ce code fonctionne et quand à creer des variables deja utilisé il suffit de creer les variables avec un prefix , le principe etant toujour le meme.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 mars 2006 à 18:28
euh.... ma fonction enlève les doublons... pour renvoyer les doublons :


function array_get_double($tab){
$tab2=array();
$tab3=array();
foreach ($tab as $a=>$b){
if (!in_array($b, $tab2)) $tab2[$a]=$b;
else if (!in_array($tab3)) $tab3[$a]=$b;
return $tab3;
}
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 mars 2006 à 18:05
oulalalala ! mais c'est quoi ce code horriblement crade ???

function array_del_double($tab){
$tab2=array();
foreach ($tab as $a=>$b){
if (!in_array($b, $tab2)) $tab2[$a]=$b;
return $tab2;
}

je ne vois pas plus simple et plus optimisé... toi ta méthode cré des variables de façon plutôt aléatoires : imagine, si ta variable de départ est passée par l'url, et si t'as une variable qui s'appelle log, alors je peux faire :

?var=login+login

et résultat, t'auras $login qui aura pour valeur yes à la fin de ta boucle... tu vois le danger ?
Rejoignez-nous