다음 편집기는 지정된 폴더에 있는 파일의 PHP 재귀 순회를 구현하는 방법에 대한 기사를 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 여기 편집기를 따라가서 살펴보겠습니다
오늘 아침 지하철에서 파일과 폴더에 관한 장을 읽었습니다. 최근에 Linux의 파일 시스템에 대해 배웠는데, 파일 속성에 액세스하는 것이 Shell 명령과 매우 유사하다고 느꼈습니다. 그래서 오늘 밤에 연습하고 싶어요.
PHP의 폴더 기능이 폴더에 있는 모든 파일(하위 디렉터리에 있는 파일 포함) 탐색을 제공하지 않는 것 같아서 직접 구현해보고 싶었습니다.
글을 쓰면서 폴더 운영에 관한 일부 기능이 제가 생각했던 것과 다르다는 것을 발견했습니다. 예를 들어 dirname()은 제공된 전체 파일 경로를 기반으로 파일이 있는 폴더의 경로를 가져오지만 폴더를 전달하면 상위 폴더를 가져옵니다. 이것을 이해해야합니다. basename()의 경우에도 마찬가지입니다. 폴더 이름은 폴더 경로를 전달하여 얻습니다. 이 두 함수에서 반환된 결과는 '/'
<?php $dirPath='/home/WWW/Test';//目录,结尾不加'/‘ //执行遍历 recursion_readdir($dirPath); /** *@summary 重复times次字符char *@param $char 需要重复的字符 *@param $times 重复次数 *@return 返回重复字符组成的字符串 */ function forChar($char='-',$times=0){ $result=''; 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.'/'.$basename; if(is_dir($path) AND $basename!='.' AND $basename!='..'){ //是目录,打印目录名,继续迭代 echo forChar('-',$Deep).$basename.'/<br/>'; $Deep++;//深度+1 recursion_readdir($path,$Deep); }else if(basename($path)!='.' AND basename($path)!='..'){ //不是文件夹,打印文件名 echo forChar('-',$Deep).basename($path).'<br/>'; } } closedir($resDir); }
위 내용은 PHP는 재귀를 사용하여 지정된 폴더의 파일을 탐색합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!