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 :

[Tableaux] Tri naturel avec natcasesort()


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Par défaut [Tableaux] Tri naturel avec natcasesort()
    Bonjour à tous,

    J'ai un soucis avec la fonction natcasesort() sur mon script PHP.
    J'ai un array() avec du contenu de type chemin d'accès sous Linux (ex : /test/distrib/debian/i386), je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $stock = array(); // création du tableau
    while(condition) $stock[] = $objet; // ajout des valeurs
    natcasesort($stock); // tri naturel sans prise en compte de la case
    foreach...

    Aucune erreur reportée par PHP, mais le tri ne s'effectue pas.

    Quelqu'un a-t'il une idée ?

    Merci

    Configuration: Linux Debian Etch 2.6.18
    Dernières versions de Apache2 et PHP5

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Salut,

    Si $objet est un Objet, je pense que le tri ne s'effectue car la comparaison effectuée n'est pas correcte. En effet dans ce cas il faudrait indiquer à PHP de trier sur $Objet->chemin, par exemple.

    Autrment c'est peut être parceque tes index ne sont pas réattribués. Mais normalement avec foreach, sa devrait être ok. Essaie tout de même un $stock = array_values($stock); avant le foreach. Dès fois que.

    bye

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Par défaut
    Merci de ta réponse.

    J'ai testé le array_values(), ça ne marche pas.

    Pour ce qui est de la variable $objet, ce n'est pas un objet de POO, c'est simplement une chaine de caractères désignant un chemin d'accès comme je l'ai précisé en haut, et dont la valeur s'ajoute dans une case du array() $stock.

    Bref, toujours bloqué

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Au fait tu es sur php5 ? ou php4 ?
    Car si tu es sous php4, tu peux essayer un &$stock.

    Parceque sur php5 ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?
    	$stock 	= array();
    	$stock[] 	= "/toto/titi/atta";
    	$stock[] 	= "/fsdgsdfdsfsdf/atta";
    	$stock[] 	= "/cvbcvbcvvcv/titi/atta";
    	$stock[] 	= "/ytuynjui,ui/titi/atta";
    	$stock[] 	= "/aaaaa/titi/atta";
     
    	natcasesort($stock); 
     
    	echo "<pre>";
    	var_dump($stock);
    	echo "</pre>";
    ?>
    Avec comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    array(5) {
      [4]=>
      string(16) "/aaaaa/titi/atta"
      [2]=>
      string(22) "/cvbcvbcvvcv/titi/atta"
      [1]=>
      string(19) "/fsdgsdfdsfsdf/atta"
      [0]=>
      string(15) "/toto/titi/atta"
      [3]=>
      string(22) "/ytuynjui,ui/titi/atta"
    }
    bye

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Par défaut
    Regarde ce qui est écrit en grisé en bas de mon premier message

    Apache 2 et PHP 5

    Mais ça ne marche pas...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Ah ouais ! Je n'avais vu comme cela en gris.


    Même mon code ne fonctionne pas ? Auquel procède à une mise à jour de php car là ce serait un bug, même si rien n'est déclaré sur php bugs (enfin j'ai fait une rapide recherche..).

    bye

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

Discussions similaires

  1. [PHP 5.2] [Tableaux] Tri naturel des valeurs d'un tableau
    Par Riko63 dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2009, 08h14
  2. [Tableaux] tri tableau avec fonction
    Par ascito dans le forum Langage
    Réponses: 7
    Dernier message: 10/09/2008, 14h21
  3. Réponses: 2
    Dernier message: 04/11/2007, 08h43
  4. [Tableaux] Tri tableau avec underscore et chiffres
    Par __fabrice dans le forum Langage
    Réponses: 4
    Dernier message: 18/10/2006, 17h05
  5. [Tableaux] tri tableau avec date
    Par omelhor dans le forum Langage
    Réponses: 12
    Dernier message: 17/10/2006, 20h24

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