Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/12/2011, 05h20   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2007
Messages : 15
Points : 1
Points : 1
Par défaut tri de plusieurs array multidimention

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
[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
        )
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 !
diice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 12h28   #2
Membre éprouvé
 
Avatar de Gecko
 
Homme Antoine B
Développeur Web
Inscription : février 2011
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Antoine B
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 106
Points : 409
Points : 409
Envoyer un message via MSN à Gecko Envoyer un message via Skype™ à Gecko
Salut

Je n'ai jamais effectué un tel tri, mais j'ai trouvé ceci:
http://php.net/manual/fr/array.sorting.php

regarde plus précisément ici: http://www.php.net/manual/fr/function.uasort.php
__________________
Si ce message vous a aidé, pensez à voter pour lui!
Développe vos scripts E-Commerce et autres en PHP
N'hésitez pas à me contacter par MP, E-Mail et MSN
Gecko est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/12/2011, 12h32   #3
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Utilise plutôt uasort( ) : http://fr.php.net/manual/fr/function.uasort.php

Edit : grilled
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 15h49   #4
Invité de passage
 
Inscription : janvier 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2007
Messages : 15
Points : 1
Points : 1
Citation:
Envoyé par Toine.pro Voir le message
Salut

Je n'ai jamais effectué un tel tri, mais j'ai trouvé ceci:
http://php.net/manual/fr/array.sorting.php

regarde plus précisément ici: http://www.php.net/manual/fr/function.uasort.php
effectivement, dans la fonction uasort, en bas dans les commentaires, un gars a laissé LA fonctions qui me fallait

je la note ici avec mon exemple :
La fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function sortByOneKey($array, $key, $asc = true) {
    $result = array();
 
    $values = array();
    foreach ($array as $id => $value) {
        $values[$id] = isset($value[$key]) ? $value[$key] : '';
    }
 
    if ($asc) {
        asort($values);
    }
    else {
        arsort($values);
    }
 
    foreach ($values as $key => $value) {
        $result[$key] = $array[$key];
    }
 
    return $result;
}
et l'utilisation :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$users = array(
    "abricotier" => array('adultes' => 12, 'pousses' => 35, 'total' => 47),
    "framboisier" => array('adultes' => 5, 'pousses' => 24, 'total' =>29),
    "bananier" => array('adultes' => 8, 'pousses' => 12, 'total' =>20)
);
 
$sortedByNameAsc = sortByOneKey($users, 'pousses');
$sortedByNameDesc = sortByOneKey($users, 'pousses', false);
 
echo "tri par 'adultes' ordre ascendant: ";
echo "<pre>" . print_r($sortedByNameAsc, true) . "</pre>";
echo "<br /><br />tri par 'adultes' ordre descendant: ";
echo "<pre>" . print_r($sortedByNameDesc, true) . "</pre>";
merci encore de vos propositions et de votre aide !
bonnes fetes encore,

diice est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h42.


 
 
 
 
Partenaires

Hébergement Web