[Résolu] Supprimer les doublons dans un array ?

WRInaute impliqué
Bonsoir !
J'ai essayé toute l'après-midi de trouver une solution à ce problème, mais walou ! :cry:

Je vous explique !
Avec une boucle je génère des tableaux (Depuis la BDD ...). Un exemple :
Code:
Array
(
    [0] => Array
        (
            [ID] => 2
            [branch_name] => Science Math
            [branch_description] => Science Math
            [branch_levels] => 2 3 

        )

    [1] => Array
        (
            [ID] => 3
            [branch_name] => Science Exp
            [branch_description] => Science Exp
            [branch_levels] => 2 3 5 

        )

    [2] => Array
        (
            [ID] => 4
            [branch_name] => Economie
            [branch_description] => Economie
            [branch_levels] => 2 
            [branch_01] => 
            [branch_02] => 
        )

)

Array
(
    [0] => Array
        (
            [ID] => 2
            [branch_name] => Science Math
            [branch_description] => Science Math
            [branch_levels] => 2 3 

        )

    [1] => Array
        (
            [ID] => 3
            [branch_name] => Science Exp
            [branch_description] => Science Exp

        )

)
En utilisant la fonction array_merge, j'ai pu obtenir le résultat suivant (parce que j'ai besoin d'avoir un seul array) :
Code:
Array
(
    [0] => Array
        (
            [ID] => 2
            [branch_name] => Science Math
            [branch_description] => Science Math
            [branch_levels] => 2 3 
        )

    [1] => Array
        (
            [ID] => 3
            [branch_name] => Science Exp
            [branch_description] => Science Exp
            [branch_levels] => 2 3 5 
        )

    [2] => Array
        (
            [ID] => 4
            [branch_name] => Economie
            [branch_description] => Economie
            [branch_levels] => 2 
        )

    [3] => Array
        (
            [ID] => 2
            [branch_name] => Science Math
            [branch_description] => Science Math
            [branch_levels] => 2 3 
        )

    [4] => Array
        (
            [ID] => 3
            [branch_name] => Science Exp
            [branch_description] => Science Exp
            [branch_levels] => 2 3 5 
        )

)

Le problème c'est qu'il y'a des doublons dans cet array, qu'il faudra supprimer ! Mais quand j'utilise la fonction array_unique elle ne me laisse qu'une seule entré vu que mon array comporte d'autres array qui semble identiques.
Moi je cherche a supprimé les array identiques dans cet array !

Mais comment faire ?

Merci de votre aide !

Adam
 
WRInaute discret
Pourquoi ne pas récupéré que les valeurs sans doublons dans la base de donnée directement avec un DISTINCT par exemple.

C'est plus simple et beaucoup plus optimisé.
 
WRInaute discret
Oui, c'est généralement le genre de souci que l'on évite d'avoir.

Mais si vraiment tu ne peux pas faire autrement, à ta place, je pense que je ferais une boucle qui copierait le contenu de ce tableau dans un nouveau tableau en me servant des clés pour savoir si c'est un doublon.
Du genre (je gribouille rapide, il faut adapter) :

Code:
$new_array = array();
foreach($array as $elem){
  $key = md5($elem['ID'].$elem['branch_name'].$elem['branch_description']);
  if(!isset($new_array[$key] ))
    $new_array[$key] = $elem;
}
 
WRInaute impliqué
Salut !
Merci pour votre réponse.
La proposition de crocxx, m'a poussée à revoir la manière dont je récupère les données.
Maintenant je ne t'utilise la boucle que pour générer le texte de la requête que j'exécute par la suite ! J'ai même pas eu besoin de DISTINCT, ça s'est fait tout seul !! :)

Merci ;)

Youpi ! :D

ADam
 
Discussions similaires
Haut