Trier un tableau en PHP

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par michel.leonard, 9 Juin 2010.

  1. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    366
    J'aime reçus:
    0
    Bonjour à tous, je vous expose mon léger problème,

    ne m'en voulez pas si il y a (probablement une erreur).

    J'ai une boucle qui va chercher 4 valeurs (associées entre elles dans ma base de données), et elle crée un tableau comme suit:

    Code:
    Array ( 
    [0] => TITRE => DESCRIPTION => SOUSTITRES => NUMERO 
    [1] => TITRE => DESCRIPTION => SOUSTITRES => NUMERO 
    [2] => TITRE => DESCRIPTION => SOUSTITRES => NUMERO 
    et ainsi de suite )
    et j'aimerai trier ce tableau par taille(en nombre de caractères) des DESCRIPTION croissantes ... en gardant les associations... evidemment...
    mais la je lis toutes les fonctions PHP, j'essaye depuis du temps, mais je ne trouve pas, un coup de pouce ?

    Merci de m'aider si vous le pouvez

    Cordialement. Mike.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 960
    J'aime reçus:
    278
    http://php.net/manual/fr/function.array-multisort.php

    Principalement l'exemple où il est écrit:
    Code:
    <?php
    // Obtient une liste de colonnes
    foreach ($data as $key => $row) {
        $volume[$key]  = $row['volume'];
        $edition[$key] = $row['edition'];
    }
    
    // Trie les données par volume décroissant, edition croissant
    // Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
    ?>
    
    
     
  3. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    366
    J'aime reçus:
    0
    J'avais déjà lu cet article en plus, je vais le re-relire... Merci de me mettre sur la piste .
    En fait dans l'exemple du manuel il n'y à que 2 valeurs associées, c'est probablement pour ca que je bute.
    Cordialement
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 960
    J'aime reçus:
    278
    Tu vas peut être devoir faire un foreach() sur ton tableau afin d'y ajouter un champ "description_size".

    Simple exemple, je ne connais pas ton array:
    Code:
    foreach($array as $k => $a){
    $array[$k]['description_size'] = strlen($k['description']);
    }
    
    Ou directement dans la boucle de l'exemple de php.net
     
  5. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 249
    J'aime reçus:
    0
    Et pourquoi pas faire un Order by length(Description) dans ta requête qui construit ce tableau ?
     
  6. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    366
    J'aime reçus:
    0
    ok , je teste, pour l'aspect pratique du sujet , je te montre mon tableau original

    C'est une base de données d'ouvertures d'échecs ou ECO est un code standard , PGN est la notation standard de la partie , Titre est le nom du premier Maître à avoir joué la position et ART est le numéro de l'article que j'ai écrit a ce sujet.

    Code:
    $query = "SELECT *
    FROM `liste_opens`
    WHERE `PGN` LIKE \"%$chercher%\"";
    
    $result = mysql_query($query);
    
    $z = -1;
    while ($row = mysql_fetch_assoc($result)) {
     $z = $z+1;
     $a = $row["ECO"];
     $b = $row["PGN"];
     $c = $row["TITRE"];
     $d = $row["ART"];
     
     $tabl[$z] = "$a => $b => $c => $d";
    }
    et là ... je réfléchis pour trier selon la taille de $b croissant...

    (c'était pour montrer l'aspect pratique).
     
  7. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    366
    J'aime reçus:
    0
    je ne connais pas encore tout, merci , je me renseigne à ce sujet, c'est agréable d'avoir des personnes qui mettent sur de bonnes pistes... amicalement
     
  8. michel.leonard
    michel.leonard WRInaute occasionnel
    Inscrit:
    1 Juin 2010
    Messages:
    366
    J'aime reçus:
    0
    Code:
    $query = "SELECT *
    FROM `liste_opens`
    WHERE `PGN` LIKE \"%$chercher%\"
    Order by length(PGN)
    ";
    et cela fonctionne...

    MERCI c'était si simple...
     
  9. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 960
    J'aime reçus:
    278
    Impec, je ne savais pas que ton tableau sortait de 1 seule requête SQL :)
    C'est bcp mieux ainsi
     
  10. YoyoS
    YoyoS WRInaute accro
    Inscrit:
    14 Septembre 2006
    Messages:
    3 249
    J'aime reçus:
    0
    Désolé je dis ptet les choses trop brutalement, ca me parait si simple. Chacun son domaine ! :mrgreen:
     
Chargement...
Similar Threads - Trier tableau PHP Forum Date
Trier un tableau par rapport à un autre Développement d'un site Web ou d'une appli mobile 5 Février 2010
Comment trier les visiteurs pour connaitre son taux de conversion réel? e-commerce 24 Septembre 2014
Précautions fermer un blog externe et "rapatrier" articles Débuter en référencement 25 Juin 2014
Fonction die un peu trop meurtrière Développement d'un site Web ou d'une appli mobile 1 Avril 2014
Trier les résultats - mysql Développement d'un site Web ou d'une appli mobile 7 Mai 2012
[mysql] trier les résultats d'une requête selon une table non liée à la requête Développement d'un site Web ou d'une appli mobile 15 Avril 2011
MySQL : comment grouper les entrées puis les trier ? Développement d'un site Web ou d'une appli mobile 21 Mars 2011
Google dispose-t-il d'un référentiel géographique pour trier ses résultats Référencement Google 28 Septembre 2010
Trier un array et catégoriser les infos (ou requêtes multiples ?) Développement d'un site Web ou d'une appli mobile 6 Juillet 2010
Trier les backlinks d'un site en fonction d'un mot clé Débuter en référencement 5 Novembre 2009
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice