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

    Problema ricerca ricorsiva di un file

    Ciao a tutti,
    sono due ore che sto sbattendo la testa per risolvere un problema (probabilmente semplicissimo), ma ormai sono fuso…

    Lo scenario è il seguente: ho una funzione di nome getPath($folder, $file) con $folder come cartella iniziale di ricerca e $file il nome del file da cercare in $folder.

    Ora $file potrebbe essere dentro a $folder, come a $folder/subdir1 oppure a $folder/subdir1/subdir2/etc..e via dicendo.

    Quello che tento di ottenere da getPath è il percorso completo a $file, esempio:

    diciamo che $file si trovi in 'controller/cartella1/cartella2/cartella3'
    Codice PHP:
    $file 'pippo_controller.php'
    $folder 'controller'//cartella iniziale dove cominciare la ricerca 
    Quello che getPath($folder, $file) in questo caso dovrebbe ritornami, una volta trovato $file in 'cartella3',
    è la stringa 'controller/cartella1/cartella2/cartella3/pippo_controller.php'

    Ho provato con una ricerca ricorsiva delle cartelle, ma evidentmente sto sbagliando qualcosa..

    Codice PHP:
        public static function getPath($mainDir$filename) {
            
    $d opendir($mainDir);
            if(
    $d) {
                while((
    $file readdir($d)) !== false) {
                    if(
    is_dir($mainDir."/".$file) && $file != "." && $file != ".." ) {
                        
    self :: getPath($mainDir."/"$file$filename);
                    }elseif(
    $file == $filename) {
                        return 
    $mainDir "/" $filename;
                        break;
                    }
                }
            }
        } 
    Il tutto funziona correttamente finchè $file è contenuto in $folder e non in una sotto-cartella della stessa.

    Qualcuno potrebbe gentilmente aiutarmi a capire cosa sto sbagliando?

    Grazie a tutti in anticipo!
    "La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano."

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    a occhio e croce c'è qualche problema con gli IF e i return... quando entri nelle sottocartelle non restituisci nulla! nel ramo true dell'if is_dir anteponi un return alla chiamata ricorsiva poi riprova

  3. #3
    Il return!!!! Ecco cosa mancava, ero proprio fuso..grazie mille davvero!
    "La luce e' piu' veloce del suono. Per questo motivo alcune persone sembrano brillanti fino a quando non parlano."

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Yes...

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.