현재 위치: > 최신 기사 목록> Scandir 함수가 반환 한 결과에서 디렉토리 및 파일의 다른 식별자를 식별하는 방법은 무엇입니까?

Scandir 함수가 반환 한 결과에서 디렉토리 및 파일의 다른 식별자를 식별하는 방법은 무엇입니까?

gitbox 2025-09-11

PHP에서 Scandir 함수는 지정된 디렉토리에서 파일 및 디렉토리 목록을 얻는 데 사용됩니다. 지정된 디렉토리의 모든 파일 및 하위 디렉토리의 이름이 포함 된 배열을 반환합니다. Scandir 의 기본 사용은 매우 간단하지만 파일을 디렉토리와 구별하는 식별을 직접 제공하지는 않습니다. 그러나 다른 기능을 결합하여 각 항목의 유형을 쉽게 식별 할 수 있습니다.

1. Scandir 기능의 기본 사용

Scandir 함수의 구문은 다음과 같습니다.

 <span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$sorting_order</span></span><span> = SCANDIR_SORT_ASCENDING [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ]] )
</span></span>
  • $ 디렉토리 : 스캔하는 디렉토리의 경로.

  • $ sorting_order : 정렬 순서를 지정하고 오름차순 순서 ( scandir_sort_ascending )로 기본 사항을 지정합니다.

  • $ 컨텍스트 : 컨텍스트 스트림, 선택 사항을 지정합니다.

Scandir는 일반적으로 파일 이름과 서브 디렉토리의 이름 인 디렉토리의 내용이 포함 된 배열을 반환합니다. 반환 값에는 현재 디렉토리 ( . ) 및 상위 디렉토리 ( .. )의 이름이 포함됩니다.

2. 파일과 디렉토리를 판단하는 방법은 무엇입니까?

Scandir가 반환 한 파일과 디렉토리를 구별하기 위해 is_file ()is_dir () 함수를 사용할 수 있습니다. 주어진 경로가 파일인지 디렉토리인지 결정하는 데 사용됩니다. Scandir 의 결과를 가로 질러 각 항목의 유형을 쉽게 식별 할 수 있습니다.

3. 샘플 코드

다음은 scandir를 사용하여 디렉토리 목록을 가져 와서 iS_file ()is_dir () 의 파일 및 디렉토리를 판단하는 방법을 보여주는 예입니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/directory'</span></span><span>;  </span><span><span class="hljs-comment">// 디렉토리를 스캔하도록 설정하십시오</span></span><span>
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">scandir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>);

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
    </span><span><span class="hljs-comment">// 뛰어 올라 "." 그리고 ".."</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file</span></span><span> == </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-variable">$file</span></span><span> == </span><span><span class="hljs-string">'..'</span></span><span>) {
        </span><span><span class="hljs-keyword">continue</span></span><span>;
    }

    </span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-variable">$directory</span></span><span> . DIRECTORY_SEPARATOR . </span><span><span class="hljs-variable">$file</span></span><span>;

    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" 디렉토리입니다\n"</span></span><span>;
    } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_file</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" 파일입니다\n"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">" 알려지지 않은 유형입니다\n"</span></span><span>;
    }
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. 코드 파싱

  1. 먼저 Scandir ($ Directory) 에 전화하여 지정된 디렉토리에 모든 파일과 디렉토리를 가져옵니다.

  2. 반환 된 파일 목록을 통해 루프를 사용하여 Foreach를 사용하십시오.

  3. 각 항목에 대해 제외 . 그리고 .. 첫째, 현재 디렉토리와 부모 디렉토리를 각각 나타내며 일반적으로 추가 처리가 필요하지 않기 때문입니다.

  4. 그런 다음 IS_DIR ()을 사용하여 항목이 디렉토리인지 확인하십시오. 디렉토리 인 경우 해당 프롬프트는 출력입니다.

  5. 다음으로 IS_FILE ()을 사용하여 파일인지 확인하십시오. 파일 인 경우 해당 프롬프트는 출력입니다.

  6. 위의 조건 중 어느 것도 충족되지 않으면 항목이 특수 파일 (예 : 기호 링크 등)으로 간주 할 수 있습니다.

5. 결과 출력 예제

/path/to/your/directory를 가정합니다.

  • file1.txt (파일)

  • file2.php (파일)

  • Subdir1 (디렉토리)

  • Subdir2 (디렉토리)

위 코드를 실행 한 후 출력은 다음과 같습니다.

 <span><span>file1.txt 파일입니다
file2.php 파일입니다
subdir1 디렉토리입니다
subdir2 디렉토리입니다
</span></span>

6. 요약

Scandiris_file () 및 is_dir () 함수를 결합하여 파일 시스템의 항목 유형을 쉽게 판단한 다음 파일 및 디렉토리를 구별 할 수 있습니다. Scandir 자체는 직접 식별 정보를 제공하지는 않지만 다른 파일 시스템 기능과 함께 사용하면이 작업이 매우 간단합니다.