2014-06-27 2 views
1

Voulez-vous transformer la fonction récursive ci-dessous. Mais en conservant le filtre d'extension de fichier autorisé (xml).comment activer une fonction récursive opendir

function lista_xml($path) { 
$xml_array = Array(); 
    $dh = opendir($path); 
     while (false !== ($file = readdir($dh))) 
    { 
     if ($file=="." || $file==".." || is_dir($file)) continue; 
     $namearr = explode('.',$file); 
     if ($namearr[count($namearr)-1] == 'xml') $xml_array[] = $file; 
    } 
    closedir($dh); 
    return $xml_array; 
} 

My Folder: 
Path/directory1/aaa.xml;bbb.xml; 
Path/directory1/directory2/xxx.xml;yyy.xml; 
Path/directory1/directory2/directory3/ccc.xml; 

I want a unique array: 
[0] => aaa.xml 
[1] => bbb.xml 
[2] => xxx.xml 
[3] => yyy.xml 
[4] => ccc.xml 

Répondre

0

Faites également de la variable de retour une variable d'entrée et appelez elle-même récursivement dans les sous-répertoires.

function lista_xml($path, $xml_array=array()) { 
    $dh = opendir($path); 
    while (false !== ($file = readdir($dh))) 
    { 
     if ($file == '.' || $file == '..') continue; 
     $file = realpath($path . '/' .basename($file)); 

     $info = pathinfo($file); 
     if (isset($info['extension']) && $info['extension'] == 'xml') { 
      $xml_array[] = $file; 
     } elseif ($file!='.' && $file!='..' && is_dir($file)) { 
      $xml_array = lista_xml($file, $xml_array); 
     } 
    } 
    closedir($dh); 
    return $xml_array; 
} 
+0

Merci pour l'aide mais il était encore possible de faire des sous-répertoires de fichiers récursifs (xml). – calebern

+0

@calebern, votre original n'a pas examiné les sous-répertoires et n'était pas récursif. Que voulez-vous exactement que la sortie soit? – Fabricator

+0

Peut se tromper de mon expression. Je veux faire la fonction originale en récursif. Actuellement, crée uniquement le tableau qui contient les fichiers dans le dossier informé ($ path). – calebern