Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Cartelle, ricorsione e array di file trovati

    Salve a tutti,
    il mio PHP è un po' arruginito e non riesco far funzionare questa funzione:
    Codice PHP:
    function read_dir$folder $files = array() ) {
        
        
    $path getcwd() . '/' $folder '/' //recupero il path completo della directory ;
        
    $tree scandir($path) ; //apro la directory    
        
    foreach( $tree as $file ) {
            if( 
    $file != '.' && $file != '..' ) {
                if (
    is_file$path.$file ) ) { $tmpFiles[] = $path.$file ; }
                elseif(
    is_dir$path.$file ) ) { read_dir$folder.'/'.$file $tmpFiles ) ; }
                else { echo 
    'Boh!' ; }
            }
        }
        if( 
    count($tmpFiles) > ) {
            
    //print_r( $files) ;
            
    return $tmpFiles ;
        }

    Quello che voglio ottenere è una lista di tutti i file trovati nell'albero di cartelle e creare un array per esportarli una volta finite tutte le cartelle e tutti i file.

    La funzione va bene se uso print_r, non funziona, invece, se provo a creare l'array: il risultato è sempre un array vuoto.
    Per ovviare al problema ho provato a passare ad ogni ricorsione l'array contenente i file ma nemmeno va.
    Io non riesco a trovare l'errore: magari se qualcuno dà uno sguardo alla funzione ci riesce! Grazie mille, ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  2. #2
    Se vuoi un array che mantenga il formato del tree di directory:
    Codice PHP:
    function read_dir_tree($folder) {
        
    $output = array();
        foreach ( 
    scandir($folder) as $item ) {
            if ( 
    $item == '.' OR $item == '..' )
                continue;
            
    $full_path "$folder/$item";
            if ( 
    is_dir($full_path) ) {
                
    $output[$item] = read_dir_tree($full_path);
            } else {
                
    $output[] = $full_path;
            }
        }
        return 
    $output;

    se invece vuoi la semplice lista "piatta" di tutti i file:
    Codice PHP:
    function read_dir_plain($folder) {
        
    $output = array();
        foreach ( 
    scandir($folder) as $item ) {
            if ( 
    $item == '.' OR $item == '..' )
                continue;
            
    $full_path "$folder/$item";
            if ( 
    is_dir($full_path) ) {
                
    $output array_merge($outputread_dir_plain($full_path));
            } else {
                
    $output[] = $full_path;
            }
        }
        return 
    $output;


  3. #3
    Ti ringrazio moltissimo k.b! L'hai anche resa più leggibile!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.