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
Rejoignez-nous