IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment ordonner un tableau ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut Comment ordonner un tableau ?
    Bonjour,

    je désire ordonner alphanumériquement les éléments qui seront plubliés par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php foreach ($this->searchareas['search'] as $val => $txt) :
    J'ai bien essayé de glisser maladroitement un sort() mais ça n'a pas marché...

    Un conseil ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comment as-tu utilisé sort() ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Mal visiblement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php foreach (sort($this->searchareas['search']) as $val => $txt) :

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut juste les données de base
    Bonjour,

    tu peux juste print_ré ou dumpé les données non triées du résultat de recherche
    et le tableau que tu attends en résultat avant affichage SVP ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Euh...
    j'ai peut-être raté quelque chose, mais ce n'est pas le résultat que je cherche à ordonner mais les checkboxes des filtres de recherche.

    print_r ($tri); donnait ça :
    Array ( [content] => Articles [elcategories] => EVENTLIST CATEGORIES [elevents] => EVENTS [vmxsearch] => Products [weblinks] => Weblinks )

    C'est ça que je cherche à ordonner en fonction des valeurs textes que ces éléments prennent.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut Si c'est bien ta question
    heu ...

    asort($tri, SORT_STRING) ;

    trier un tableau sur des valeurs considérées comme des chaines en conservant les clés, je ne vois pas d'autres réponses

    C'était bien ça ta question ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Oui j'avais essayé...
    Jusqu'à ce que je comprenne que le tri est fait sur les valeurs qui ne sont pas affichées :
    Array ( [content] => Articles [elcategories] => EVENTLIST CATEGORIES [elevents] => EVENTS [vmxsearch] => Products [weblinks] => Weblinks )
    est parfaitement trié :
    [content] [elcategories] [elevents] [vmxsearch] [weblinks]
    Mais les données affichées sont :
    - en US : Articles Event categories Events Catalog Web Links
    - en FR : Articles Types d'activités Activités Catalogue Liens web
    - en SP : Artículos Tipos de actividades Actividades Catálogo Enlaces web

    L'inconvénient c'est que ces données sont affectées dans le foreach, donc après le tri...
    (cf code)
    Avec ma petite tête j'imagine qu'il faudrait affecter ces valeurs dans un autre tableau intermédiaire. C'est lui que l'on trierait. Ensuite il faudrait modifier le foreach.
    Mais avec mes mouffles, je ne peux pas écrire tout ça !

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut oki
    ton problème c'est un problème d'algo

    tu tries des valeurs que tu n'utilises pas puis tu vas chercher des nouvelles valeurs sans les trier.

    il faut séparer ton problème en plusieurs temps

    1 récupérer les bonnes valeurs textuelles
    2 les triées
    3 faire l'affichage

    Oui, ca fait deux foreach, mais rien n'est parfait ...

    C'est bien ça ?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Citation Envoyé par vexa Voir le message
    C'est bien ça ?
    Oui j'en ai bien peur...
    Avec mes moufles ça va être dur !

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut pb de maintenance
    Pratiquemment à chaque fois que l'on copie colle du code par fainéantisse, on perd du temps plus tard.

    1 on copie colle à deux endroits A et B parce qu'il est 22H et fait chier
    2 on attends 6 mois
    3 on découvre le bug( l'utilisateur )
    4 on corrige le code en A et le problème semble résolu
    5 on attends 1 semaine
    6 on redécouvre le bug( l'utilisateur ), ho stupeur, je croyais l'avoir corrigé
    7 on cherche deux jours le problème en A
    8 on reprends la recherche de bug du début et on trouve le bug en B
    9 on regrette le copié collé d'il y a 6 mois

    Pour économiser 3minutes, on perd 3jours pour 1copié-collé.
    Il suffit pour se rendre compte de l'ampleur du problème de convertir les minutes en jour et de multiplier par le nombre de copié-collé.


    C'est la notion que l'on cache sous l'appelation "maintenance"


    "Il faut favoriser la maintenance"

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Merci à nouveau.
    J'ai enlevé le 1er tri qui en fait ne servait à rien.
    Ça fonctionne bien et je pense aussi dans 6 mois !
    De toutes façon sinon je t'envoie un message privé !

    Allez je continue à regarder ce que tu as écrit pour en ressortir moins bête !

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut allez,
    un petit copié collé caca vite fait, même avec des moufles ca passe ...

    $tri = $this->searchareas['search'];
    foreach ($tri as $val => $txt)
    {
    $checked = is_array( $this->searchareas['active'] ) && in_array( $val, $this->searchareas['active'] ) ? 'checked="checked"' : '';
    $tri[ $val ] = JText::_($txt) ;
    }
    ?>
    asort( $tri , SORT_STRING) ;

    foreach ($tri as $val => $txt) :
    $checked = is_array( $this->searchareas['active'] ) && in_array( $val, $this->searchareas['active'] ) ? 'checked="checked"' : '';
    ?>
    <input type="checkbox" name="areas[]" value="<?php echo $val;?>" id="area_<?php echo $val;?>" <?php echo $checked;?> />
    <label for="area_<?php echo $val;?>">
    <?php echo $txt; ?>
    </label>
    <?php endforeach; ?>


    C'est pas comme si c'était fait pour être relu dans 6 mois

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Wouah !...


    Un petit ?> à virer et c'est Impec !


    Je vais étudier ta soluce pour apprendre.

    Mais que veux-tu dire par
    C'est pas comme si c'était fait pour être relu dans 6 mois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2010, 11h51
  2. Comment parcourir un tableau
    Par petitsims dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/01/2005, 15h33
  3. [CR] comment faire un tableau croisé
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/08/2004, 19h32
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 22h09
  5. comment creer un tableau "stable"
    Par gaut dans le forum C
    Réponses: 16
    Dernier message: 23/07/2003, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo