Trier un tableau multidimentionnel php
Résolu/Fermé
kergad
-
22 août 2010 à 01:10
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 23 août 2010 à 15:24
Bilow Messages postés 1014 Date d'inscription samedi 21 août 2010 Statut Membre Dernière intervention 2 août 2015 - 23 août 2010 à 15:24
A voir également:
- Trier un tableau multidimentionnel php
- Tableau croisé dynamique - Guide
- Trier tableau excel - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
3 réponses
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
22 août 2010 à 14:11
22 août 2010 à 14:11
Salut !
Je ne comprend pas le traitement en PHP, je vais donc t'expliquer comment je fais pour une arborescence :
J'ouvre le dossier (opendir); Je liste dans un tableau les dossiers. Je recommence avec les fichiers. Je trie ces deux-la avec sort() ( $ tableau = sort($tableau);
Et avec foreach(), je liste chaque dossier. Je les trie ( foreach, et dans chaque boucle, sort() );
Si tu pouvais expliquer ton but précis, ou bien nous passer le code PHP, ce serait plus pratique.
Merci.
Je ne comprend pas le traitement en PHP, je vais donc t'expliquer comment je fais pour une arborescence :
J'ouvre le dossier (opendir); Je liste dans un tableau les dossiers. Je recommence avec les fichiers. Je trie ces deux-la avec sort() ( $ tableau = sort($tableau);
Et avec foreach(), je liste chaque dossier. Je les trie ( foreach, et dans chaque boucle, sort() );
Si tu pouvais expliquer ton but précis, ou bien nous passer le code PHP, ce serait plus pratique.
Merci.
Mon but et d'afficher le contenu de mes dossiers avec leur sous dossiers
exemple (nouvel album -> part1 -> mes photos)
Voici le code de ma fonction:
Merci
exemple (nouvel album -> part1 -> mes photos)
Voici le code de ma fonction:
function dirlist($position) { $dir_nom = $position; // dossier listé (pour lister le répertoir courant : $dir_nom = '.' --> ('point') $dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant $fichier= array(); // on déclare le tableau contenant le nom des fichiers $dossier= array(); // on déclare le tableau contenant le nom des dossiers $tab= array(); // on déclare le tableau contenant le nom des dossiers //echo "$dir_nom <p> +1"; while($element1 = readdir($dir)) { if($element1 != '.' && $element1 != '..' && $element1 != 'Thumbs.db') { //echo $element1."+2\n"; $tab[$element1] = array(); $dir2= dir("$dir_nom/$element1"); while (($element2 = $dir2->read()) !== false) { if($element2 != '.' && $element2 != '..' && $element2 != 'Thumbs.db') { //echo $element2."+3\n"; $tab[$element1][$element2]=array(); $dir3= dir("$dir_nom/$element1/$element2"); while (($file = $dir3->read()) !== false) { if($file != '.' && $file != '..' && $file != 'Thumbs.db') { //echo $file."+4\n"; $tab[$element1][$element2][]=$file; } } $dir3->close(); } } $dir2->close(); } } closedir($dir); //print_r($tab); //usort($tab[], "strcasecmp"); //array_multisort($tab, SORT_ASC, SORT_STRING}; //var_dump($tab); return $tab; }
Merci
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
23 août 2010 à 15:24
23 août 2010 à 15:24
Salut !
Voici un code qui écrit une arborescence complète, et par ordre alphabétique.
Les balises <ul> et <li> sont en HTML des listes à puce.
Par défaut, ce code fait une arborescence du dossier actuel, c'est-à-dire celui ou le script s'éxécute. Tu peux le modifier à la ligne parcours("").
Bye ;)
Code :
Voici un code qui écrit une arborescence complète, et par ordre alphabétique.
Les balises <ul> et <li> sont en HTML des listes à puce.
Par défaut, ce code fait une arborescence du dossier actuel, c'est-à-dire celui ou le script s'éxécute. Tu peux le modifier à la ligne parcours("").
Bye ;)
Code :
<?php function parcours($location){ global $files, $dirs; $tab = array(); echo "<ul>"; $chemin = $location; if($chemin == ""){ $chemin = "."; } $dossier = opendir($chemin); for($i=0; $f = readdir($dossier); $i++){ if($f == "." || $f == "..") continue; $tab[$i] = $f; } closedir($dossier); sort($tab); foreach($tab as $nom){ echo "<li>".$nom."</li>"; if(is_dir($location.$nom)){ $dirs++; parcours($location.$nom."/"); } else{ $files++; } } echo "</ul>"; } parcours(""); ?> <center><?php echo $files; ?> fichiers et <?php echo $dirs; ?> dossiers au total.</center>