>  기사  >  백엔드 개발  >  PHP는 재귀를 사용하여 지정된 폴더의 파일을 탐색합니다.

PHP는 재귀를 사용하여 지정된 폴더의 파일을 탐색합니다.

怪我咯
怪我咯원래의
2017-07-05 10:24:191235검색

다음 편집기는 지정된 폴더에 있는 파일의 PHP 재귀 순회를 구현하는 방법에 대한 기사를 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 여기 편집기를 따라가서 살펴보겠습니다

오늘 아침 지하철에서 파일과 폴더에 관한 장을 읽었습니다. 최근에 Linux의 파일 시스템에 대해 배웠는데, 파일 속성에 액세스하는 것이 Shell 명령과 매우 유사하다고 느꼈습니다. 그래서 오늘 밤에 연습하고 싶어요.

PHP의 폴더 기능이 폴더에 있는 모든 파일(하위 디렉터리에 있는 파일 포함) 탐색을 제공하지 않는 것 같아서 직접 구현해보고 싶었습니다.

글을 쓰면서 폴더 운영에 관한 일부 기능이 제가 생각했던 것과 다르다는 것을 발견했습니다. 예를 들어 dirname()은 제공된 전체 파일 경로를 기반으로 파일이 있는 폴더의 경로를 가져오지만 폴더를 전달하면 상위 폴더를 가져옵니다. 이것을 이해해야합니다. basename()의 경우에도 마찬가지입니다. 폴더 이름은 폴더 경로를 전달하여 얻습니다. 이 두 함수에서 반환된 결과는 '/'

<?php
$dirPath=&#39;/home/WWW/Test&#39;;//目录,结尾不加&#39;/‘

//执行遍历
recursion_readdir($dirPath);

/**
*@summary 重复times次字符char
*@param $char 需要重复的字符
*@param $times 重复次数
*@return 返回重复字符组成的字符串
*/
function forChar($char=&#39;-&#39;,$times=0){
  $result=&#39;&#39;;
  for($i=0;$i<$times;$i++){
    $result.=$char;
  }
  return $result;
}

/**
*@summary  递归读取目录
*@param $dirPath 目录
*@param $Deep=0 深度,用于缩进,无需手动设置
*@return 无
*/
function recursion_readdir($dirPath,$Deep=0){
 $resDir=opendir($dirPath);
 while($basename=readdir($resDir)){
   //当前文件路径
   $path=$dirPath.&#39;/&#39;.$basename;
   if(is_dir($path) AND $basename!=&#39;.&#39; AND $basename!=&#39;..&#39;){
    //是目录,打印目录名,继续迭代
    echo forChar(&#39;-&#39;,$Deep).$basename.&#39;/<br/>&#39;;
    $Deep++;//深度+1
    recursion_readdir($path,$Deep);
   }else if(basename($path)!=&#39;.&#39; AND basename($path)!=&#39;..&#39;){
     //不是文件夹,打印文件名
     echo forChar(&#39;-&#39;,$Deep).basename($path).&#39;<br/>&#39;;
   }

 }
 closedir($resDir);
}
로 끝나지 않습니다.

위 내용은 PHP는 재귀를 사용하여 지정된 폴더의 파일을 탐색합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.