Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141

    trasformare albero directory in array

    ciao,
    dovrei fare una banale gestione di immagini contenute in directory.
    spiego meglio.
    Ad esempio ho una cartella padre [Livello1] con delle immagini al suo interno, oltre a queste immagini dentro questa ho altre cartelle che contengono a loro volta altre immagini:

    [Livello1]
    img1_liv1.jpg
    img2_liv1.jpg
    img3_liv1.jpg

    [Livello2]
    img1_liv2.jpg
    img2_liv2.jpg

    [Livello3]
    img1_liv3.jpg

    Vorrei sapere se è possibile ricavare un array del tipo

    array("Livello1"=>array("img1_liv1.jpg","img2_liv1 .jpg","img3_liv1.jpg","Livello2"=>array("img1_liv2 .jpg","img2_liv2.jpg"),"Livello3"=>array("img1_liv 3.jpg")));


    Ho cercato sul forum, ma non ho trovato nulla che facesse al caso mio.

    Ringrazio anticipatamente.

    ciao
    Lore

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Originariamente inviato da filippo.toso
    Ti consiglio di iniziare leggendo il manuale ufficiale:

    http://www.php.net/dir
    ciao,
    grazie per il link, ma come scorrere una directory mi è chiaro, non è la prima volta che lo faccio, a me servirebbe fare quello specificato nel primo post...

    Codice PHP:
    function Rec($dir,&$arr,$level=1)
    {
        
    $ctr_dir explode("/",$dir);

    //Premesso che potrei avere dei path del tipo
    //1)    /xxxx/austria/
    //2)      /xxxx/austria/vienna/
    //$loc nel 1° caso sarà austria; nel 2° vienna
    //$dest nel 1° caso sarà xxx ( ma $dest nn mi interessa perchè lo uso solo quando $level>1, 
    // ossia quando entro in una subdir esempio: /xxxx/austria/vienna ); nel 2° austria 
          
    $loc $ctr_dir[count($ctr_dir)-1];  
          
    $dest $ctr_dir[count($ctr_dir)-2];        
          
    //scorro semplicemente la dir richiamando recursivamente la funzione, qualora trovo una //sottodir
        
    $dp opendir($dir);
        
    $tmp = array();
          while(
    $file readdir($dp))
          {
              if(
    $file != '..' && $file != '.' && $file != '')
              {          

                  if(
    is_dir($dir."/".$file))
                  {
                      
    $new_dir $dir."/".$file;
                      
    Rec($new_dir,$arr,2); 
                  }                  
                  else 
                      
    $tmp[] = $file;
                  
              }          
          }
          
          
          
    //entra nella dir padre
          
    if($level == 1)
              
    $arr[$loc] = $tmp;
          else 
            
    //qui entra nelle subdirectory
              
    if($level 1)
              {              
                  
    $arr[$loc] = $tmp;     
              }    
          
          return 
    $arr;


    ho buttato giù questo esempio in 2 min, sicuramente si può fare diversamente e meglio, solo che ora mi interessa capire come fare quello che mi servirebbe ( vedi 1^ post ), perchè nell'esmpio che ho fatto, uscirebbe una cosa del tipo

    Codice PHP:
    [austria]
       
    immagini austria

    [vienna]
       
    immagini vienna 

    come se fossero 2 celle distite di uno stesso array,
    quando a me servirebbe che uscisse una cosa del tipo:

    Codice PHP:
    [austria]
       
    immagini austria
       
    [vienna]
           
    immagini vienna 
    dove vienna è incluso nella cella "austria" dell'array...

    spero di aver reso l'idea.

  4. #4
    Invece di passare $arr alla funzione ricorsiva, passa l'elemento dell'array che identifica la directory che stai per visitare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.