이 글은 주로 PHP의 재귀 함수를 사용하여 다단계 디렉토리를 만드는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.
자세한 내용은 다음과 같습니다.
function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ //查看目录是否已经存在或尝试创建,加一个@抑制符号是因为第一次创建失败,会报一个“父目录不存在”的警告。 echo $dir."创建成功<br>"; //输出创建成功的目录 }else{ $dirArr=explode('/',$dir); //当子目录没创建成功时,试图创建父目录,用explode()函数以'/'分隔符切割成一个数组 array_pop($dirArr); //将数组中的最后一项(即子目录)弹出来, $newDir=implode('/',$dirArr); //重新组合成一个文件夹字符串 Directory($newDir); //试图创建父目录 if(@mkdir($dir,0777)){ echo $dir."创建成功<br>"; } //再次试图创建子目录,成功输出目录名 } } Directory("A/B/C/D/E/F");
출력 결과는 그림과 같습니다.
하지만 매뉴얼에 있는 파일 기능을 보면 너무 번거롭다는 것을 알 수 있습니다. dirname() 함수, 그 중 프로토타입은 다음과 같습니다:
string dirname ( string $path )
파일의 전체 경로가 포함된 문자열이 주어지면 이 함수는 디렉터리 이름을 반환합니다. 파일 이름을 제거한 후.
Windows에서는 슬래시(/)와 백슬래시()를 모두 디렉터리 구분 기호로 사용할 수 있습니다. 다른 경우에는 슬래시(/)입니다.
약간 최적화 가능:
function Directory($dir){ if(is_dir($dir) || @mkdir($dir,0777)){ echo $dir."创建成功<br>"; }else{ Directory(dirname($dir)); if(@mkdir($dir,0777)){ echo $dir."创建成功<br>"; } } }
효과는 동일합니다.
나중에 인터넷에서 답변을 검색한 결과 매우 통찰력 있는 답변을 찾았습니다.:
function Directory( $dir ){ return is_dir ( $dir ) or Directory(dirname( $dir )) and mkdir ( $dir , 0777); }
이제 전체 기능을 설명하겠습니다.
먼저 PHP에서 논리 연산자의 우선 순위를 소개합니다: && > ; || > 및 > dir )) 및 mkdir ( $dir , 0777))
먼저 대상 디렉토리가 존재하는지 확인하십시오. 또는 단락 특성에 따라 다음 전체가 짧아집니다. -회로가 실행되고 대상 디렉터리가 없으면 다음 함수 본문을 실행합니다: Directory(dirname( $dir )) 및 mkdir ( $dir , 0777)
재귀를 먼저 수행하는 목적 : 먼저 재귀를 실행하여 상위 디렉터리(dirname($dir))가 생성되었는지 확인하므로 상위 디렉터리를 생성할 수 없을 때 후속 mkdir() 함수가 경고를 발행하지 않습니다. 하위 디렉터리를 만들 때 발견되었습니다. 재귀 깊이를 입력한 후, 가장 깊은 루트 디렉터리가 존재하는지 확인한 후, 루트 디렉터리부터 아래로 순서대로 디렉터리를 생성합니다.
마지막으로, 취업을 원하는 사람들에게 온라인으로 가서 대기업의 면접 질문을 찾아보라고 제안합니다. 결국, 이들의 시험은 더 포괄적이고 심층적이기 때문에 지식을 배울 때도 공부해야 합니다. 너무 야심차고 과소평가되기 쉽기 때문에 정상적으로 사용하기 전에 처음에 여러 번 최적화를 했습니다. 이것은 PHP에서 다단계 디렉토리를 재귀적으로 생성하는 것에 대한 인터뷰 질문입니다. 앞으로 편집자는 몇 가지 흥미로운 인터뷰 질문을 찾아 여러분과 공유할 것입니다.
요약
: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장사항: PHP에서 각각 및 목록 기능을 사용하는 방법
PHP 지리적 위치 검색 및 거리 계산위 내용은 PHP는 재귀 함수를 사용하여 다중 레벨 디렉토리를 생성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!