本文实例讲述了PHP遍历树的常用方法。分享给大家供大家参考。具体如下:
一、递归的深度优先的算法:
PHP;">
PHP
define('DS',DIRECTORY_SEPARATOR);
function rec_list_files($from = '.')
{
if(!is_dir($from)) {
return array();
}
$files = array();
if($dh = opendir($from))
{
while(false !== ($file = readdir($dh))) {
if($file == '.' || $file == '..') {
continue;
}
$path = $from . DS . $file;
$mem2 = memory_get_peak_usage();
printf('
return $list;
}
profile('rec_list_files',"D:\www\server");
?>
if (is_file($path)) {
$files[] = $path;
}
$files = array_merge($files,rec_list_files($path));
}
closedir($dh);
}
return $files;
}
function profile($func,$trydir)
{
$mem1 = memory_get_usage();
echo '
----------------------- Test run for '.$func.'() ';';
flush();
$time_start = microtime(true);
$list = $func($trydir);
//print_r($list);
$time = microtime(true) - $time_start;
echo 'Finished : '.count($list).' files
$mem2 = memory_get_peak_usage();
printf('
Max memory for '.$func.'() : %0.2f kbytes Running time for '.$func.'() : %0.f s',($mem2-$mem1)/1024.0,$time);
return $list;
}
profile('rec_list_files',"D:\www\server");
?>
二、递归的深度优先的算法(用了一个栈来实现)
PHP;">
三、非递归的广度优先算法(用了一个队列来实现)
PHP;">
NEXT CHILD
}
return $files; // end of tree,file not found
}
function profile($func,$time);
return $list;
}
profile('breadth_first_files',"D:\www\server");
?>
希望本文所述对大家的PHP程序设计有所帮助。
原文链接:https://www.f2er.com/php/21754.html