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 :

tri de tableau


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut tri de tableau
    Bonjour, je galère et je n'y arrive pas ...
    J'ai un objet dans une fonction qui s'appelle $this (normal) et qui contient un tableau avec plusieurs colonnes.
    Je voudrais simplement trier ce tableau sur la première colonne qui s'appelle "nom". ... j'ai toujours des messages d'erreur ...

    sort($htis) ...

    pouvez-vous m'indiquer où chercher la solution ou me dire comment vous faites ?

    merci.

    Olivier

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    euh... J'ai pas tout à fait compris : tu as un attribut mon_tableau dans un objet et tu veux une fonction qui trie ce tableau ? Quelle tête a le tableau ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    c'est du style :

    bleu 40 10 couleur bleu
    vert 50 10 couleur verte

    et il faudrait trier sur la couleur, le premier attribut par ordre alphabétique.

    Merci

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $data = array(
        array('vert', 50, 10, 'couleur vert'),
        array('bleu', 40, 10, 'couleur bleu')
    );
     
    usort($data, function($a, $b) { return strcasecmp($a[0], $b[0]); });
    $this est un mot réservé, tu ne peux pas avoir une variable appelée ainsi autre que l'instance courante d'une classe.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    ok, mais dans la fonction, le tableau s'appelle $this, alors, est-ce que je peux faire usort($this, ...) ??
    Merci

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu dois oublier un truc, poste le code complet stp.
    Cela devrait être quelque chose dans ce genre : $this->data;

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    mon tableau est généra dans une classe ps_database.
    Je dois changer la valeur du premier élément et ensuite trier le tableau sur cette nouvelle valeur.

    pour changer la valeur, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function re($field_name, $mavar, $stripslashes=true) {
       $this->record[$this->row]->$field_name = $mavar;
       return;
    }
    Ensuite, j'essaie de trier, mais ça joue pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function tri(){  
       sort($this);  --> à changer
       return;
    }
    la première fonction est ok.
    Merci

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    C'est pas clair du tout tes explications. M'enfin...

    Je me pose la question si tu comprends tes lignes de code.
    Si le code de tes fonctions se limite qu'à ce que tu veux bien montrer : les return sont inutiles et le $stripslashes=true aussi.

    $this->record ne contient qu'un seul enregistrement ?
    Si c'est une collection, ce n'est pas une collection de tableaux mais vu comment c'est codé une collection d'instances de classe (genre DAO). Pour que mon code fonctionne, tu dois pouvoir y accéder comme si c'était un tableau donc tes classes doivent implémenter l'interface \ArrayAccess. Est ce qu'elles l'implémentent ?

    Quelle est la valeur de $field_name désignant la couleur ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    voici à quoi ressemble mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps_DB Object ( [row] => 0 [record] => Array ( [0] => stdClass Object ( [product_name] => Or brillant 12% [products_per_row] => 3 [category_browsepage] => browse_3 [category_flypage] => flypage.tpl [category_id] => 9 [product_id] => 211 [product_full_image] => Or_brillant_12__4e00c14d902cb.jpg [product_thumb_image] => resized/Or_brillant_12__4e00c14d89530_150x150.jpg [product_s_desc] => Quantité 2 gr. [product_parent_id] => 0 [product_publish] => Y [product_in_stock] => -95 [product_sku] => 4000 [product_url] => [product_weight] => 0.0000 [product_weight_uom] => livres [product_length] => 0.0000 [product_width] => 0.0000 [product_height] => 0.0000 [product_lwh_uom] => pouces [product_available_date] => 1307491200 [product_availability] => [mdate] => 1357628803 [cdate] => 1308672333 )
    et je dois trier par [product_name]

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    c'est bon, à force de tout essayer, j'y suis arrivé.
    merci à tous.
    Olivier

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Il te suffisait d'adapter légèrement mon code sans tomber dans l'usine à gaz :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    usort($this->record, function($a, $b) { return strcasecmp($a->product_name, $b->product_name); });

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

Discussions similaires

  1. [Tableaux] tri de tableau deux dimensions
    Par oursquetaire dans le forum Langage
    Réponses: 8
    Dernier message: 27/12/2005, 14h27
  2. Problème dans un tri de tableau
    Par pmboutteau dans le forum ASP
    Réponses: 5
    Dernier message: 29/11/2005, 13h12
  3. [Tableaux] tri de tableau
    Par rdams dans le forum Langage
    Réponses: 19
    Dernier message: 08/11/2005, 13h46
  4. [PERL] problème tri de tableau
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2005, 15h42
  5. [langage] tri dans tableau de hachage
    Par mimilou dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2004, 16h10

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