Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1836 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Php Usort Array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Php Usort Array

n°1791819
grosbin
OR die;
Posté le 25-09-2008 à 14:08:30  profilanswer
 

Bonjour je dispose d'un array sur lequel je souhaite appliquer un critère usort ( pour redéfinir l'ordre des clés sans avoir à créer un nouveau tableau )

Code :
  1. Prenons ..
  2. $In[cle1]="bob";
  3. $In[cle2]="zorro";
  4. $In[cle3]="eponge";
  5. $In[cle4]="zoup";


Je souhaite que dans l'ordre d'un foreach, d'un print_r sur $In .. dans l'ordre
cle2,cle4, cle1,cle3
en somme dépiler les cles 2 et 4 et les mettre au sommet du tableau
( en précisant que ces clés sont textuelles et non numériques )
merci à celui qui a l'idée  :jap:


---------------
Photos Panoramiques Montagnes Haute Savoie
mood
Publicité
Posté le 25-09-2008 à 14:08:30  profilanswer
 

n°1791826
flo850
moi je
Posté le 25-09-2008 à 14:12:28  profilanswer
 

usort n'applique des criters de tris que sur les valeurs, pas sur les clé

 


la seule solution pour faire ca est de sortir tes deux elements de ton tableau, puis de les remettre, mais j'ai un peu de mal a en voir la finalité

 

sinon,on a inventé, recemment, les objets pour faire des structures de données spécifiques : une classe qui va bien avec l'interface iterator, par exemple

Message cité 1 fois
Message édité par flo850 le 25-09-2008 à 14:13:14
n°1791830
grosbin
OR die;
Posté le 25-09-2008 à 14:18:05  profilanswer
 

ok, donc rsort, unset de mes deux clés, les remettres, puis rsort à nouveau :D
il s'agit juste d'un affichage champs par champs sur 90 champs, en sortie d'une requete sql basé sur un foreach :)


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1791831
flo850
moi je
Posté le 25-09-2008 à 14:19:51  profilanswer
 

tu as lu mon post jusqu'au bout pour choisir uniquement la solution crade ?

 

et puis une requete qui retourne 90 champs :vomi:

 

c'est bien de produire du code rapidement, masi le jour ou tu changes un champ dans  ta bdd , ton code plante


Message édité par flo850 le 25-09-2008 à 14:20:31
n°1791833
grosbin
OR die;
Posté le 25-09-2008 à 14:24:13  profilanswer
 

J'ai regardé la classe, il y a moyen de faire bien plus court :D
[edit] j'ai trouvé, ça marche :D


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1791834
flo850
moi je
Posté le 25-09-2008 à 14:28:43  profilanswer
 


double fail : le premier est de ne pas partager ta solution, le second est de juger qu'un code plus court est meilleur

n°1791840
grosbin
OR die;
Posté le 25-09-2008 à 14:47:28  profilanswer
 

Non, je recherche simplement qq'un qui parvient à ce résultat avec une fonction native, bien écrite

Code :
  1. //Pour l'instant c'est moche .. mais ça passe
  2. $in[cle1]="3";
  3. $in[cle2]="1";
  4. $in[cle3]="4";
  5. $in[cle4]="2";
  6. function Organiser($array,$order){
  7.   $order=array_reverse($order,1);
  8.   $array=array_reverse($array,1);
  9.   foreach($order as $v){$val=$array[$v];unset($array[$v]);$array[$v]=$val;}
  10.   return array_reverse($array,1);
  11. }
  12. $in=Organiser($in,array("cle2","cle4" ));

Je prie les dieux de l'élégance de venir à mon secours et à m'apprendre les bonnes façons de procéder en faisant pleins d'objets sans aucune modularité ..


Message édité par grosbin le 25-09-2008 à 14:52:49

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1791844
skeye
Posté le 25-09-2008 à 14:52:48  profilanswer
 

flo850 a écrit :

usort n'applique des criters de tris que sur les valeurs, pas sur les clé


http://fr.php.net/manual/en/function.uksort.php


---------------
Can't buy what I want because it's free -
n°1791847
grosbin
OR die;
Posté le 25-09-2008 à 14:54:16  profilanswer
 

merci c'est cela que je cherchais au final :)


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1791854
flo850
moi je
Posté le 25-09-2008 à 15:00:29  profilanswer
 

c'est quand même super crade ( meme si j'avais complètement oublié uksort )

mood
Publicité
Posté le 25-09-2008 à 15:00:29  profilanswer
 

n°1791864
grosbin
OR die;
Posté le 25-09-2008 à 15:22:54  profilanswer
 

Je suis d'accord à 100% mais ne trouvant pas de solution plus élégante à ce jour ..  :jap:
( doit bien exister un moyen de le faire en 2 lignes, un truc natif, oublié au fin fond de le doc php, nan ? )


Message édité par grosbin le 25-09-2008 à 15:23:10

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1791866
flo850
moi je
Posté le 25-09-2008 à 15:28:37  profilanswer
 

encore une fois, c'est pas parceque ca fait deux lignes que c'est élégant  
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Php Usort Array

 

Sujets relatifs
[PHP+SHELL][PHP][SMARTY] Construire un nom de variable à la volé avec eval et cat
Balise <form> qui ne renvoie rien à mon script PHP[PHP] Requete sql avec virgules
[PHP + PDF] Insérer un filigranePHP: Une commande pour parcourir un tableau...
Problème avec PHP photo moduleRecuperer les informations du formualaire en PHP
[PHP] equivalent de super en phptrier un array ?? troll en cours ...
Plus de sujets relatifs à : Php Usort Array


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR