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 :

Manipulation de fonction récursive


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut Manipulation de fonction récursive
    Bonjour,

    voilà une fonction php que j'utilise (elle permet de parcourir récursivement l'arborescence d'un dossier)
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <?php
    set_time_limit("60000");
     
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            <title></title>
        </head>
        <body>
            <?php
                $rec = 0; //utiliser pour détecter les retour arrière de la fonction
     
                function listage($path)
                {
     
                //On déclare le tableau qui contiendra tous les items de nos dossiers
                $tableau_elements = array();
     
                //On ouvre le dossier
                $dir = opendir($path);
     
                //Pour chaque élément du dossier...
                while (($element_dossier = readdir($dir)) !== FALSE)
                {
     
                    //...si l'élément est lui-même un dossier (en excluant le dossier parent et actuel), on appelle la fonction de listage en modifiant la racine du dossier à ouvrir
                    if ($element_dossier != '.' && $element_dossier != '..' && is_dir($path.'/'.$element_dossier))
                    {        
                            //Ici on fusionne le tableau grâce à la fonction array_merge. Au final, tous les résultats de nos appels récursifs à la fonction Listage fusionneront dans le même tableau
                            $tableau_elements = array_merge($tableau_elements, listage($path.'/'.$element_dossier));
     
                    }
                    elseif ($element_dossier != '.' && $element_dossier != '..')
                    {echo '<br/>\$element_dossier :'.$path.'/'.$element_dossier;
                            //Sinon l'élément est un fichier, on enregistre dans le tableau
                            $tableau_elements[] = $path.'/'.$element_dossier;
                    }
                }
                //On ferme le dossier
                closedir($dir);
     
                //On retourne le tableau
                return $tableau_elements;
                }
            ?>
     
            <?php
            //On définit la racine
            $path = 'C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr'.utf8_decode("\Algérie");
     
            //Appel à notre fonction
            $tableau_elements = Listage($path);
            echo "<pre>";
            print_r( $tableau_elements );
            echo "</pre>";
            ?>
     
        </body>
    </html>
    Voilà, j'ai besoin de récupéré le chemin de l'arborescence du dossier (pour moi il représentent une localisation de région dans un paye) mais d'une phasons structuré chaque région (retour arrière sur un dossier soit mis sur un variable[i] )

    Exemple:
    [/Ain-Defla]
    /Ain-Defla
    /Ain-Defla/Bir Ould Khelifa
    /Ain-Defla/El Attaf

    [/Ain-Temouchent]
    /Ain-Temouchent/Ain Temouchent
    /Ain-Temouchent/Beni Saf
    .....

    Alors sur la fonction je n'ai pas la main pour faire ce cas de figure ! (si quelqu'un voix une autre solution c'est avec plaisir)

    Cordialement

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    quelle est ta question ? qu'est ce que tu obtiens pour le moment ? quel est le résultat que tu souhaiterai ?

  3. #3
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    quelle est la question ?
    comment faire une sorte de tableaux de structure qui sera remplit selon les retour arrière de l'exploration des dossier dans l'arborescence ?

    Citation Envoyé par nosferapti Voir le message
    qu'est ce que tu obtiens pour le moment ?
    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
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Adrar/Adrar/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Adrar/Aoulef/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Adrar/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/Ain Defla/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/Arib/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/Bir Ould Khelifa/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/El Attaf/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/Hammam Righa/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/Khemis Miliana/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/Miliana/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Defla/Sidi Lakhdar/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Temouchent/Ain Temouchent/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Temouchent/Beni Saf/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Temouchent/Chaâbet El Leham/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Temouchent/dir.html
    \$element_dossier :C:\Users\B.REDOUANE\Desktop\Httrak\Profiling_Kompass\directory.kompass.com\fr\Algérie/Ain-Temouchent/EL Amria/dir.html
    .............
    Citation Envoyé par nosferapti Voir le message
    quel est le résultat que tu souhaiterai ?
    [/Ain-Defla]
    /Ain-Defla
    /Ain-Defla/Bir Ould Khelifa
    /Ain-Defla/El Attaf

    [/Ain-Temouchent]
    /Ain-Temouchent/Ain Temouchent
    /Ain-Temouchent/Beni Saf
    .....

    pour les dossier (qui représente une localisation des région) avec une séparation entre les element du tableau qui est celle des retour arrière de la fonction récursive.

Discussions similaires

  1. fonction récursive: erreur
    Par calla29 dans le forum Débuter
    Réponses: 3
    Dernier message: 16/05/2006, 11h51
  2. [VB6] XML, fonction récursive de recherche
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/04/2006, 21h27
  3. [XSLT] fonction récursive à N niveaux
    Par Mike35 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/03/2006, 12h30
  4. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 10h08
  5. Problème de fonction récursive avec un TcxDBTreeList
    Par isachat666 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/12/2005, 13h12

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