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 d'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 Tri d'un tableau
    Bonjour,

    pour une galerie d'images, j'ai le contenu d'un répertoire qui est trié ainsi :
    array_multisort($images, SORT_ASC, SORT_REGULAR);

    Le résultat donne d'abord par noms de fichiers commençant par des chiffres, puis par des capitales et enfin par des minuscules.

    J'aimerais n'avoir que les chiffres puis les lettres (sans différenciation majuscules/minuscules).
    Comment faire ?

    Merci
    PAul

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    peut être avec natcasesort ?

  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
    Merci pour la suggestion. J'y ai cru, mais ça ne fonctionne toujours pas pour moi...

    J'ai mis : natcasesort($images);
    et à vrai dire je ne comprends pas l'ordre sorti (ça paraît un peu en vrac)

    J'ai mal fait ?

    Voici le code original :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (($f = readdir($dh)) !== false) {
    	if((substr(strtolower($f),-3) == 'jpg') || (substr(strtolower($f),-3) == 'gif') || (substr(strtolower($f),-3) == 'png')) {
    		$noimage++;
    		$images[] = array('filename' => $f);
    		array_multisort($images, SORT_ASC, SORT_REGULAR);
    	}
    }

  4. #4
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    je ne connais pas vraiment les flags disponibles et leur action exact vu que j' n'ai pas souvenir avoir déjà utilisé array_multisort(), donc je me permet de te proposer une alternative à cette fonction qui permet de faire à peu près tout et n'importe quoi en terme de tri, usort().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Trier(& $a, & $b)
    {
        return strtolower($a) > strtolower($b) ? 1 : -1;
    }
     
    usort($image, 'Trier');
    C'est à tester, voir à adapter, mais il me semble que php sait faire une comparaison lexicale avec les opérateurs de comparaison standards.

  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
    C'est étrange :
    ta proposition marche très bien en local,
    mais dès que je la mets en ligne j'ai l'alerte :
    Warning: usort() [function.usort]: The argument should be an array in...

  6. #6
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    a mon avis, le problème ne doit pas venir de la fonction mais de ton parametre $image...

    Rajoute juste avant le usort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!is_array($images))
       die("c'est bien ce que je pensait, image n'est pas un tableau !");

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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