Page 1 sur 1

Tri d'un tableau provenant d'une fonction récurcive

Posté : 23 sept. 2010, 11:53
par Likeun
Bonjour,
Tout est dans le titre,
J'ai une fonction récursive qui me permet de lister tous les fichiers d'un dossier et de ses sous dossiers. Tous ceci dans un tableau contenant le nom du fichier, et la date de modification du fichier.
Mais je n'arrive pas à trier ce tableau étant donné que c'est une fonction récursive ...
Avez-vous une idée?

Merci d'avance.

Likeun

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 23 sept. 2010, 11:57
par zeus
Montre nous ce que tu as fais jusque là ;)

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 23 sept. 2010, 13:04
par Likeun
<?
function ScanRepertoire($Directory)
{


  $MyDirectory = opendir($Directory) or die('Erreur');
	while($Entry = @readdir($MyDirectory)) {
		if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') 
		{

			ScanRepertoire($Directory.'/'.$Entry);

		}
		else {
		
if ($Entry != "." && $Entry != ".." && $Entry != "index.php") 
	{
$type = str_replace('.','',strstr($Entry, '.'));
$tab[] = array($Entry, filemtime($Directory.'/'.$Entry));
if (stristr($Entry, $_POST[recherche]) !== FALSE && ($_POST[recherche] != "" ))
{
	?>

//Affichage selon mes envie...
<?php
}
		
    }
	}
}
?></table><?php
  closedir($MyDirectory);
return($tab);


}
echo count($tab);
function cmp3($a,$b) {
    if ($a[1] == $b[1])
        return 0;
    return ($a[1] < $b[1]) ? -1 : 1;
	
usort($tab, "cmp");
}

ScanRepertoire('./biblesetoutils');

?>

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 23 sept. 2010, 13:12
par Likeun
L'idée qui est derriere tout ça, c'est que je souhaite affiche les X derniers documents modifiés qui se trouve dans des dossiers, sous dossiers, et sous sous sous dossiers. Mais la fonction récursive me bloque mon tri.
Et malheuresement, je ne peux pas me passer de ses sous dossiers... ( sinon j'aurai enlevé la fonction de récursive et le tri aurait fonctionné ).

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 23 sept. 2010, 15:13
par xTG
A la ligne 10 tu ne récupères pas le retour de ta fonction récursive, c'est donc tout à fait normal d'avoir des problèmes.
Tu ne fais aucune utilisation du return $tab.

Donc ton tableau ne pourra jamais être traité vu qu'il ne contient pas les sous-répertoires.

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 23 sept. 2010, 15:41
par Likeun
êtes-vous sur ?
Car moi ce que je comprend de ce que j'ai voulu faire c'est si le fichier n'est pas un répertoire j'insére le nom et la date de modification dans $tab sinon si c'est un répertoire, je scanne ce que contient ce répertoire et donc j'insère les fichiers qui sont compris dedans toujours dans la même array non ?
Si ce n'est pas le cas, j'aimerai bien si possible que vous me proposer un code car je ne vois pas l'intérêt d'utiliser la fonction return à ce niveau là.
Je me trompe surement car je n'arrive pas à faire le tri, mais j'aimerai comprendre s'il vous plait.

En tout cas merci de m'avoir répondu, et de m'aider

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 23 sept. 2010, 18:46
par xTG
$tab est une variable locale à la fonction, elle n'est en aucun cas globale.

Petit exemple :
function test($a)
{
  echo $a;
  if( $a < 2 )
    $b = test($a + 1);
  else
    $b = 0;
  echo $a;
  echo $b;
  $a = $a + 1;
  return $a;
}
test(0);
Résultat :
0 //a
//appel de test( 0 + 1)
  1 //a
  //appel de test( 1 + 1)
    2 //a
    2 //a
    0 //b
  1 //a
  3 //b
0 //a
2 //b
1 //retour de test(0)
En gros mon exemple est peut être mal foutu mais si tu t'y penches un peu tu verras que la modification de la variable $a n'est pas prise en compte quand on dépile les fonctions. Seul le return a une incidence sur la fonction appelante.

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 24 sept. 2010, 10:07
par Likeun
Merci pour vos réponses, mais je n'y arrive pas. Tampis

Re: Tri d'un tableau provenant d'une fonction récurcive

Posté : 24 sept. 2010, 10:10
par xTG
Il est dommage d'abandonner pour si peu.
Si jamais tu reviens sur tes dires voici un merveilleux cours sur la récursivité que tu as tant de mal à comprendre : http://recursivite.developpez.com/