[Reglé] Retirer les doublons d'un tableau PHP ?

WRInaute impliqué
Bonjour,

En PHP, j'ai un tableau du style :

$tab[0] : google
$tab[1] : Google
$tab[2] : google
$tab[3] : google
$tab[4] : gooGle
$tab[5] : Google
$tab[6] : Google

J'aimerai retirer de ce tableau tous les doublons, c'est à dire garder à chaque fois un seul exemplaire, en faisant attention à la casse (garder les différences de majuscules).
Ainsi j'aimerai obtenir :

$tab[0] : google
$tab[1] : Google
$tab[2] : gooGle

Je vois pas et j'arrive pas à savoir comment on peut faire ça... si vous pouvez m'aider.

Merci
 
WRInaute occasionnel
tiens une fonction :
Code:
<?
function ValeursUniques($tableau) {

  // On récupère les mêmes valeurs dans 1 seule case
  for ($i = 0, $n = count($tableau); $i < $n; $i++)
    $uTableau[$tableau[$i]] = 1;

  // On crée le nouveau tableau
  reset($uTableau);
  for ($i = 0, $n = count($uTableau); $i < $n; $i++) {
    $tUnique[] = key($uTableau);
    next($uTableau);
  }
  return $tUnique;
}

$tVals = Array(5, 3, 5, 1, 8, 3, 5, 1, 3, 2, 2, 9, 1);
$tVals = ValeursUniques($tVals);

for ($cpt=0; $cpt < count($tVals); $cpt++)
  echo $tVals[$cpt]." ";
?>
Source www.phpinfo.net

Sinon tu a la fonction array_unique().
http://www.php.net/manual/fr/function.array-unique.php depuis php 4.0.1
 
WRInaute passionné
array array_unique ( array array) pour dédoublonner un tableau

Note : Deux éléments sont considérés comme égaux si et seulement si (string) $elem1 === (string) $elem2. En clair : lorsque la représentation en chaîne de caractères est identique.

voila! :D
 
WRInaute impliqué
Sympa pour vos réponse rapides.
array_unique() fonctionne à merveille :)

Merci !


Reglé !
 
WRInaute discret
Si tu veux rester simple et bien on peut faire très simple :
Tu pars du 1er élément de ton tableau et pour chacune des occurences suivantes de ton tableau tu les compares et si ce dernier est égale au premier et bien on lui affecte la chaine vide par exemple. Puis tu prens le deuxieme élément de ton tableau et tu le compare à toutes les occurences suivantes de ton tableau et si ce dernier est égale au deuxieme et bien on lui affecte la chaine vide aussi. Puis tu prens le troisieme etc... Jusqu'à l'avant dernier.

Quand tu as finis, et bien dans ton tableau tu n'as plus de doublons puisque les doublons ont été remplacés par la chaine vide. Enfin pour finir tu copies tous les éléments du tableau tab qui ne sont pas la chaine vide dans le tableau tabSD (SD voulant dire Sans Doublon).
Alors si on traduit cet algo en php voila ce que cela nous donne :
On suppose que $Tab est ton tableau contenant toutes les chaines où tu souhaites virer les doublons. Voici le code :

for($i=0;$i<count($tab)-1;$i++){
for($j=$i+1;$j<count($tab);$j++){
if($tab[$i]==$tab[$j])
$tab[$j]="";
}
}

// On crée le tableau tabSD le tableau sans doublon
$j=0;
for($i=0;$i<count($tab);$i++){
if($tab[$i]!=""){
$tabSD[$j++]=$tab[$i];
}
}

Et c'est tout !!!
 
Discussions similaires
Haut