Php 如何将递归函数转换为opendir
是否要转换下面的递归函数。 但是保留允许的文件扩展名(xml)的过滤器Php 如何将递归函数转换为opendir,php,recursion,opendir,Php,Recursion,Opendir,是否要转换下面的递归函数。 但是保留允许的文件扩展名(xml)的过滤器 使返回变量也成为输入变量,并在子目录上递归调用自身 function lista_xml($path, $xml_array=array()) { $dh = opendir($path); while ( false !== ($file = readdir($dh)) ) { if ($file == '.' || $file == '..') continue;
使返回变量也成为输入变量,并在子目录上递归调用自身
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;
}
感谢您的帮助,但仍然可以执行递归文件(xml)子目录。@calebern,您的原始文件没有检查子目录,并且不是递归的。您希望输出的确切内容是什么?可能是我表达式的错误。我想使原始函数递归。当前仅创建包含文件夹($path)中文件的数组。@calebern,这就是我的答案的作用…我编辑了我的问题。。。
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;
}