Heim >Backend-Entwicklung >PHP-Tutorial >遍历树的方法一

遍历树的方法一

WBOY
WBOYOriginal
2016-07-25 09:10:52913Durchsuche
递归的深度优先的算法
  1. define('DS', DIRECTORY_SEPARATOR);
  2. function rec_list_files($from = '.')
  3. {
  4. if(!is_dir($from)) {
  5. return array();
  6. }
  7. $files = array();
  8. if($dh = opendir($from))
  9. {
  10. while(false !== ($file = readdir($dh))) {
  11. if($file == '.' || $file == '..') {
  12. continue;
  13. }
  14. $path = $from . DS . $file;
  15. if (is_file($path)) {
  16. $files[] = $path;
  17. }
  18. $files = array_merge($files, rec_list_files($path));
  19. }
  20. closedir($dh);
  21. }
  22. return $files;
  23. }
  24. function profile($func, $trydir)
  25. {
  26. $mem1 = memory_get_usage();
  27. echo '
    ----------------------- Test run for '.$func.'() ';
  28. flush();
  29. $time_start = microtime(true);
  30. $list = $func($trydir);
  31. //print_r($list);
  32. $time = microtime(true) - $time_start;
  33. echo 'Finished : '.count($list).' files';
  34. $mem2 = memory_get_peak_usage();
  35. printf('
    Max memory for '.$func.'() : %0.2f kbytes Running time for '.$func.'() : %0.f s
    ',
  36. ($mem2-$mem1)/1024.0, $time);
  37. return $list;
  38. }
  39. profile('rec_list_files', "D:\www\server");
  40. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP,关联数组,根据元素值删除元素 Nächster Artikel:URI处理函数