supprimer les doublons dans un tableau simple mais efficace

Eléphanteau du PHP | 23 Messages

07 sept. 2007, 02:07

pas tres ingenieux mais efficace:
$a=array("1","7","4","mots","7","0","mots","texte");
$a = array_unique($a);
ou encore;

$a=array("1","7","4","mots","7","0","mots","texte"); 
while(list($k,$v)=each($a)) $b[$v]++; 
while(list($k,$v)=each($b)) echo $k."n"; 
et encore


$a=array("1","7","4","mots","7","0","mots","texte");

$q = 0;

while (list($key,$val) = each($varA)) { 
 @$varB[$val]++;  // bien mettre "@" sinon ça indique des erreurs 
}

while (list($key, $val) = each ($varB)) {
 $varC[$q] = $key; $q++;
}

while (list($key, $val) = each ($varC)) { 
 echo "[".$key."] = ".$val."<br>";
}

ViPHP
ViPHP | 5924 Messages

07 sept. 2007, 04:20

Désolé de faire transparaître ma perplexité, mais quel est l'intérêt des deux dernières solutions qui sont plus longues que la première, et sachant que la première étant implémentée en C, sans benchs, l'on peut affirmer qu'elle est de loin beaucoup plus rapide.

Mammouth du PHP | 19672 Messages

07 sept. 2007, 06:36

Je signale quand même l'existence en natif de array_unique() qui fait ça assez bien aussi :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2287 Messages

07 sept. 2007, 11:16

Ce qui serait vraiment intéressant c'est la même problématique mais dans une table MySQL :D un modèle de requête de détection de doublons (sur 1 à N champs) et une requête de détection&suppression tout en un.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

07 sept. 2007, 13:15

Note : il faut bannir le while(list = each), c'est beaucoup plus lent, et moins lisible qu'un bon foreach(tableau as cle => valeur)

Eléphanteau du PHP | 23 Messages

07 sept. 2007, 13:18

ok suis assez news en php j essaye donc des solutions mais merci pour ses conseil :wink:

ViPHP
fab
ViPHP | 2657 Messages

07 sept. 2007, 14:24

un petit bench pour illustrer les propos de naholyr :
http://www.php.lt/benchmark/phpbench.php
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }