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

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] tri sur plusieurs array multidimentionels

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] tri sur plusieurs array multidimentionels

n°2118836
jcdweb
Posté le 31-12-2011 à 05:09:21  profilanswer
 

Bonjour a tous,

 

Je me trouve face a un probleme, qui ne s'est jamais posé avant.. et j'avoue que je peche  malgres pas mal de recherches comme array_multisort (mais je vois trop comment l'utiliser dans mon cas...)...

 

j'ai plusieurs arrays exemple :
<code>
[abricotier] => Array
        (
            [adultes] => 12 (nb d'abricotiers adultes)
            [pousses] => 18 (nb d'abricotiers qui viennent d'etre plantés)
            [Total] => 30 (total d'abricotiers)
        )

 

   [framboisier] => Array
        (
            [adultes] => 1
            [pousses] => 0
            [Total] => 1
        )

 

   [fraisier] => Array
        (
            [adultes] => 4
            [pousses] => 3
            [Total] => 7
        )
</code>

 

j'aimerai avoir la possibilité de trier de 3 façons :
- trier les arbres qui ont le plus de plans adultes
- trier les arbres qui sont le plus en train de pousser
- trier suivant le total de chaque arbres

 

actuellement, je passe en $_GET['tri'] soit 'adultes', soit 'pousses', soit 'Total'

 

suis-je obligé de recreer un nouvel array pour le reinjecter apres dans mes array originaux ?
array_multisort ne me permet t'elle pas de trier selon 3 keys ?

 

j'avoue que je ne sais pas trop vers quoi m'orienter malgres mes différents test qui ne donnent rien du tout...

 

si vous avez une petite idée, je prendrai bien volontiers !
merci d'avance, et de tres bonnes fetes a tous !


Message édité par jcdweb le 31-12-2011 à 05:17:33
mood
Publicité
Posté le 31-12-2011 à 05:09:21  profilanswer
 

n°2118885
CyberDenix
Posté le 31-12-2011 à 19:13:29  profilanswer
 
n°2119338
mdc888
01010100 01101111 01110101 011
Posté le 04-01-2012 à 09:02:11  profilanswer
 

Merci pour ta réponse, mais je ne souhaite pas trier l'ensemble du tableau, juste déplacer l'une des clé (une seule) et laisser les autres dans l'ordre attribué...
Donc usort ne semble pas la réponse ;)
 
EDIT : en plus, usort détruit les clés, ce que je veux éviter à tout prix...

Message cité 1 fois
Message édité par mdc888 le 04-01-2012 à 09:28:00
n°2119921
kyodenball
Posté le 06-01-2012 à 13:16:45  profilanswer
 

Normalement ça devrait marché avec quelque chose de se genre ?
 

Code :
  1. // Le tableau contenant des arbres
  2. $arbres = array(LA LISTE DE TES ARBRES);
  3. // La colonne de tri
  4. $tri = $_GET['tri'];
  5. // Tableau temporaire contenant les données de la colonne de tri
  6. $sort = array();
  7. foreach ($arbres as $nom => $detail) {
  8.   $sort[$nom] = $detail[$tri];
  9. }
  10. // Tri les arbres
  11. array_multisort($sort, SORT_ASC, $arbres);


 
Bien sur il manque la vérification comme quoi la colonne existe est autorisé et existe bien dans les sous tableaux...


Message édité par kyodenball le 06-01-2012 à 13:18:19
n°2120348
pop-pan
yay!
Posté le 10-01-2012 à 01:56:16  profilanswer
 

mdc888 a écrit :

Merci pour ta réponse, mais je ne souhaite pas trier l'ensemble du tableau, juste déplacer l'une des clé (une seule) et laisser les autres dans l'ordre attribué...
Donc usort ne semble pas la réponse ;)
 
EDIT : en plus, usort détruit les clés, ce que je veux éviter à tout prix...


 
uasort() conserve les clefs
 

Code :
  1. function cmp_adultes($a, $b) {
  2.     if ($a['adultes'] == $b['adultes']) {
  3.         return 0;
  4.     }
  5.     return ($a['adultes'] < $b['adultes']) ? -1 : 1;
  6. }
  7. uasort($arbres, "cmp_adultes" );



---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2121033
MEI
|DarthPingoo(tm)|
Posté le 12-01-2012 à 16:43:42  profilanswer
 

c'est array_multi_sort à priori qu'il faut utiliser en créant un tableau temporaire de cle de tri.
 

Code :
  1. public function sort($array, $attribute, $order = SORT_ASC)
  2. {
  3.     // Creating sorting array...
  4.     $sortArray = array();
  5.     foreach ($array as $item) {
  6.         $sortArray[] = $item[$attribute];
  7.     }
  8.     // Sorting data...
  9.     array_multisort($sortArray, $order, $this->_data);
  10.     unset($sortArray);
  11. }



Message édité par MEI le 12-01-2012 à 16:46:18

---------------
| AMD Ryzen 9 5950X 16C/32T @ 3.4-4.9GHz - 64GB DDR4-3600 16-18-18 1T - AMD Radeon RX 5700 XT 8GB @ 2010MHz/14Gbps |

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

  [PHP] tri sur plusieurs array multidimentionels

 

Sujets relatifs
Supprimer une ligne dans un ficher CSV en PHPAucun script moteur de recherche PHP ne marche !!
[PERL] plusieurs tie(tableau)Menu déroulant PHP et MySQL
Script PHP[PHP] Script long et timeout
Afficher du contenu HTML sous condition PHPRécupérer le résultat d'une fonnction PHP par JS
Créer un Array superglobal 
Plus de sujets relatifs à : [PHP] tri sur plusieurs array multidimentionels


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