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] Trier deux tableaux avec array_multisort


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Points : 68
    Points
    68
    Par défaut [Tableaux] Trier deux tableaux avec array_multisort
    Bonjour,

    Je bloque un peu sur la façon comment je pourrais trier et afficher 2 tableaux de la manière souhaité, je m'explique:

    J'ai 2 tableaux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $niveau=array(0,1,2,2,0,1,1,2,3,4,2,2,0);
     
    $contenu=array('dossier','fichier','fichier','dossier',' fichier','dossier','fichier','dossier','dossier','fichier','dossier','fichier','fichier');
    Ici je trie en ordre croissant les 2 tableaux selon les valeurs du premier tableau.(c-a-d par niveau)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     array_multisort($niveau,SORT_ASC,$contenu);
     
     for($i=0;$i<count($niveau);$i++) {
      echo '<br>'.$niveau[$i].'=>'.$contenu[$i];
     }
    Affichage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    0=>fichier
    0=>dossier
    0=>fichier
    1=>dossier
    1=>fichier
    1=>fichier
    2=>dossier
    2=>dossier
    2=>dossier
    2=>dossier
    2=>fichier
    3=>dossier
    4=>fichier
    Mais là où je bloque c'est que je veux commencer à trier après le niveau 0 , et si le niveau du dossier = au niveau du fichier, le fichier s'affiche avant le dossier.
    C'est pas évident à expliquer, c'est la raison pour laquelle je donne un exemple de l'affichage souhaité.

    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
    16
     
    0=>dossier
    1=>fichier
    2=>fichier
    2=>dossier
     
    0=>fichier
    1=>fichier
    1=>dossier
    2=>fichier
    2=>dossier
    2=>dossier
    3=>dossier
    4=>fichier
     
    0=>fichier

    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    pour avoir cet affichage, tu dois stocker tes informations sous forme d'arborescence dès le début, comme ça par exemple :
    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
    16
    17
    18
    19
    20
    21
    22
     
    array(
        'listeRepertoires' => array(
            array(
                'nomRepertoire' => 'répertoire 1',
                'listeFichiers' => array(
                    'fichier A1',
                    'fichier B1',
                    'fichier C1',
                ),
            )
            array(
                'nomRepertoire' => 'répertoire 2',
                'listeFichiers' => array(),
            )
        ),
        'listeFichiers' => array(
            'fichier A',
            'fichier B',
            'fichier C',
        ),
    )

Discussions similaires

  1. Trier deux tableaux et les fusionner
    Par syrine01 dans le forum Débuter
    Réponses: 4
    Dernier message: 29/10/2014, 22h51
  2. Réponses: 5
    Dernier message: 20/03/2007, 01h56
  3. [Tableaux] Trier des données avec des tableaux
    Par yobogs dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2006, 13h39
  4. Réponses: 4
    Dernier message: 11/10/2005, 10h17

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