Salut !
Voilà ma question :
Est-il possible de trier un array par intermitence. Je veux dire par la que lorsque l'on récupère des données dans une DB, on obtient souvent un mélange hétérogène de données dans l'array (surtout lorsqu'il s'agit de données d'inscription d'utilisateurs). Par exemple : A,A,B,A,A,A,B,B,A,B,B,B.
et j'aimerai savoir s'il est possible de le classer par intermitence afin d'obtenir un mélange homogène. Par exemple : A,B,A,B,A,B,A,B,A,B,A,B.
Merci de m'aider !!
Message édité par tmor6vite le 07-06-2006 à 00:28:16
Lorsque l'on récupère des données d'une base de donnée, on récupère généralement des données mélangées ou bien ordonnées par ordre alphabétique dans un array, celà depend de la requête SQL utilisée (par exemple : A,A,A,A,A,A,B,B,B,B,B,B,B)
J'aimerai savoir si vous connaissez un moyen de les ranger par intermitence (par exemple : A,B,A,B,A,B,A,B,A,B,A,B,A)
J'ai déjà regardé à la fonction sort() et tous ses dérivés mais je ne trouve rien qui correspond à ce que je veux faire.
S'il n'est pas possible de faire ca, existe il une requête SQL spécifique permettant ceci ?
Merci de votre aide !!
Non aucune, il te faut retravailler ton tableau par toi même. il existe tout de même une fonction qui permet de "mélanger" un tableau >> Voir ici shuffle << peut être que ca te donnera une autre vision de ce que tu ve faire.
Par contre tu peux faire ça :
A,A,B,A,A,A,B,B,A,B,B,B
--> tri -->
A,A,A,A,A,A,B,B,B,B,B,B
--> considérer deux listes --> A,A,A,A,A,A
B,B,B,B,B,B
--> prendre le premier de chaque puis le deuxieme, etc -->
A,B,A,B,A,B,A,B,A,B,A
Ta fonction ne marche pas ici orni car je dois garder les clés et celle-ci les effacent.
Je vais donner un exemple pour que vous compreniez mieux :
J'ai dans une DB les données d'utilisateurs (nom prénom sexe).
Il y a 2 valeurs posible pour sexe ^^ et j'aimerai trouver un moyen pour récupérer TOUTES les données dans un array contenant la totalité de la DB de facons à avoir un mélange homogène d'Hommes et de Femmes tout en gardant les clefs correspondant aux champs de la DB ainsi que les noms et prénoms des utilisateurs.
c'est a dire par exemple apres le tri :
- Emilie Dupont F
- Jean Batiste M
- Sophie Roger F
- Edouard Renaud M
( Je suis désolé si l'un de ces noms est le votre mais c'est le pûr hazard ^^ )
Cependant les requetes SQL permettent de classer uniquement par ordre alphabétique ces données et si je récupère la totalité de la DB avec tri, j'aurai les Femmes au début et les Hommes à la fin. Par contre si je n'utilise pas de tri j'aurai un array classé en fonction de l'id de chaque personne (par ordre d'enregistrement sur mon site).
A moins que vous ne connaissiez une requete permettant ceci, j'ai donc décidé de créer 2 array (un pour les Hommes & un pour les Femmes) et de les mélanger avec une des fonctions sort, array_multisort, etc... mais comme j'utilise une boucle while pour traiter les données de l'array ligne par ligne, je ne peux pas utiliser ce genre de fonctions. j'en arrive donc à une troisième solution qui aurait été d'appliquer plusieurs paramètres à la fonction while (ou for) afin de pouvoir traiter les données de 2 array simultanément dans une unique boucle while (ou for).
Donc si vous avez une solution pour ces 3 problemes qui étaient censés être des solutions ^^ Prévenez moi :P
Merci pour votre aide.
Message édité par tmor6vite le 07-06-2006 à 20:43:03
Ben oui, c'est facile.
La condition d'arrêt de ta boucle WHILE doit être :
indice < Nombre_De_Mecs ET indice < Nombre_De_Nana
A l'intérieur de la boucle, bien vérifier que indice < Nombre_De_Mecs avant de traiter les Mecs et que indice < Nombre_De_Nanas avant de traiter les Nanas
C'est bon ça m'a l'air de marcher mais je ne comprend pas à quoi correspond 'indice <' ?
Il faut utiliser le signe égal pour traiter un array (enfin je fais comme ca moi et ça marche ^^)