Page 1 sur 1

supprimer les doublons dans un tableau simple mais efficace

Posté : 07 sept. 2007, 02:07
par jim02
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>";
}

Posté : 07 sept. 2007, 04:20
par Sékiltoyai
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.

Posté : 07 sept. 2007, 06:36
par Cyrano
Je signale quand même l'existence en natif de array_unique() qui fait ça assez bien aussi :-k

Posté : 07 sept. 2007, 11:16
par Calimero
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.

Posté : 07 sept. 2007, 13:15
par naholyr
Note : il faut bannir le while(list = each), c'est beaucoup plus lent, et moins lisible qu'un bon foreach(tableau as cle => valeur)

re

Posté : 07 sept. 2007, 13:18
par jim02
ok suis assez news en php j essaye donc des solutions mais merci pour ses conseil :wink:

Posté : 07 sept. 2007, 14:24
par fab
un petit bench pour illustrer les propos de naholyr :
http://www.php.lt/benchmark/phpbench.php