Probleme de tri de tableau

zabroska
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
- 25 août 2008 à 15:41
zabroska
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008
- 28 août 2008 à 09:29
Bonjour,
voila mon problème :
j'ai un tableau de la forme $Tableau[$i][$j][] que je voudrais ranger dans l'ordre alphabétique. J'ai déjà essayé avec sort() mais cela ne marche pas.
Quelqu'un aurait-il une petite idée pour le tri?
Merci d'avance.

7 réponses

jreaux62
Messages postés
195
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
32
26 août 2008 à 14:15
0
zabroska
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

26 août 2008 à 14:47
slt,
merci pour ta réponse même si elle ne permet pas de résoudre mon problème. La fonction présentait permet de ne pas tenir compte des majuscules/minuscules du mot mais mon problème est autre.
Voici le code me permettant de remplir le tableau que j'aimerai bien pourvoir trier:

$numboucle=1;
$numcontact=1;
$numhotel=1;
foreach($Societe1 as $societe){
      $sr1 = ldap_search ($ds, $societe[26], "cn=*");
      $info1 = ldap_get_entries ($ds, $sr1);
       for ($j=0; $j < $info1 ["count"]; $j++){
               $Contact[$j][$numboucle][0]=$info1[$j]["uid"][0];
               $Contact[$j][$numboucle][1]=$info1[$j]["cn"][0];
               $Contact[$j][$numboucle][2]=$info1[$j]["telephonenumber"][0];
               $Contact[$j][$numboucle][3]=str_replace("Autre Telephone: ","",$info1[$j]["telephonenumber"][1]);
               $Contact[$j][$numboucle][4]=$info1[$j]["mobile"][0];
               $Contact[$j][$numboucle][5]=$info1[$j]["mail"][0];
               $Contact[$j][$numboucle][6]=$info1[$j]["businesscategory"][0];
               $Contact[$j][$numboucle][7]=$info1[$j]["initials"][0];
               $Contact[$j][$numboucle][8]=$info1[$j]["displayname"][0];
               $Contact[$j][$numboucle][9]=$info1[$j]["title"][0];
               $Contact[$j][$numboucle][10]=$info1[$j]["employeetype"][0];
               $Contact[$j][$numboucle][11]=$info1[$j]["dn"];
                }
       sort($Contact);

Quelqu'un a une petite idée??
merci d'avance.
0
jreaux62
Messages postés
195
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 octobre 2011
32
26 août 2008 à 18:41
As-tu essayé (a la place de sort($Contact);):
$ContactAlpha = usort($Contact, "strcasecmp");

// afficher le resultat :
for ($m=0;$m<Sizeof($ContactAlpha);$m++) {
echo 'ContactAlpha('. $m. ') : '. $ContactAlpha[$m] .'
';
}
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
27 août 2008 à 08:28
Hello,

@jreaux : non ça ne fonctionnera pas, ta fonction va comparer les tableaux qui sont les valeurs des 1ères clefs. De plus, usort() renvoie un booléen...:-) On ne l'utilise pas comme ça non plus : le tableau lui est passé par référence.

@zabroska : il faut aussi savoir comment tu veux comparer ? Chaque clef de la profondeur 1 indépendamment ?  Ou sans tenir compte de ces clefs ?
Dans tous les cas, tu ne trouveras rien de tout fait. Il faudra y bosser un peu :-) Vois du côté de array_multisort(), et avec un peu d'imagination...ça devrait le faire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zabroska
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

27 août 2008 à 09:38
Slt,
merci pour ces réponses!
je vais tester ta solution "malalam" mais avant je voudrais savoir sur quelle partie du tableau s'effectue le tri dans l'exemple que j'ai donné auparavant car lorsque j'exécute ce bout de code le tri s'effectue sur une partie des données sauf les 3 derniers de ce qui s'affiche.
merci d'avance.
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
27 août 2008 à 19:29
Tu veux trier comment au juste ? Donne un exemple : le tableau AVANT du type :
array(
  0 => array(val1, bal2, val3),
  1 => array(val4, val5, val6);
  etc...
)
et ce que tu veux obtenir après.
0
zabroska
Messages postés
37
Date d'inscription
mercredi 2 janvier 2008
Statut
Membre
Dernière intervention
28 août 2008

28 août 2008 à 09:29
bonjour,
dans le tableau d'avant, je voudrais trier le tableau à chaque fin de la boucle " for ($j=0; $j < $info1 ["count"]; $j++){" pour pouvoir par la suite afficher les différentes personnes d'une même société dans l'ordre alphabétique. De plus, la variable $numboucle ne change pas au cours de la boucle. le tri se fait sur l'info suivante : "$Contact[$j][$numboucle][0]=$info1[$j]["uid"][0];".
le résultat souhaité :
Société1
   personnelA
   personnelB
   personnelC
SociétéX
   personnelA1

   personnelB1

   personnelC1

J'espere que mes explications sont assez claires.
Merci encore pour l'aide!
0