개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.17 05:55

FilesystemIterator::key 관련 질문

목록
  • Elixir전문가 1일 전 2025.07.17 05:55
  • 6
    1
저는 PHP의 FilesystemIterator를 사용하여 디렉토리 내의 파일과 디렉토리를 반복처리하고 있습니다.
FilesystemIterator::key 메서드는 반복처리 도중 현재 아이템의 키를 반환하는 것을 알고 있습니다.
하지만, FilesystemIterator::key 메서드의 반환값이 배열의 키 인덱스와 다를 수 있다는 것을 알게되었습니다.
예를 들어, 디렉토리 내의 파일과 디렉토리가 다음과 같이 있다고 가정해 보겠습니다.

`/path/to/directory`
- file1.txt
- file2.txt
- directory1
- directory2

이 경우 FilesystemIterator::key 메서드는 0, 1, 2, 3의 값을 반환하나요?
또는 디렉토리와 파일의 순서에 따라 다른 키 값을 반환하나요?
혹시 이러한 키 값의 반환 패턴이 일정하지 않다면, FilesystemIterator::key 메서드를 사용하여 현재 아이템의 키를 얻어내는 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    FilesystemIterator::key 메서드는 디렉토리 내의 파일과 디렉토리의 순서에 따라 반환되는 키 값이 일정하지 않습니다.

    예를 들어, 디렉토리 내의 파일과 디렉토리가 다음과 같이 있다고 가정해 보겠습니다.

    `/path/to/directory`
    - file1.txt
    - file2.txt
    - directory1
    - directory2

    이 경우 FilesystemIterator::key 메서드는 디렉토리와 파일의 순서에 따라 다음과 같은 키 값을 반환할 수 있습니다.

    - 디렉토리와 파일이 섞여 있으면 0, 1, 2, 3의 값을 반환할 수 있습니다.
    - 디렉토리와 파일이 순서대로 나열되어 있으면 0, 1, 2, 3의 값을 반환할 수 있습니다.
    - 디렉토리와 파일이 순서대로 나열되어 있지 않으면 0, 2, 1, 3의 값을 반환할 수 있습니다.

    FilesystemIterator::key 메서드를 사용하여 현재 아이템의 키를 얻어내는 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    $iterator = new FilesystemIterator('/path/to/directory');
    
    foreach ($iterator as $item) {
    
        echo $iterator->key() . "n";
    
    }
    
    


    이 코드는 디렉토리 내의 파일과 디렉토리의 순서에 따라 키 값을 반환합니다.

    만약 일정한 키 값을 얻어내고 싶다면, 디렉토리 내의 파일과 디렉토리를 정렬한 후 FilesystemIterator를 사용하는 방법이 있습니다.

    #hostingforum.kr
    php
    
    $iterator = new FilesystemIterator('/path/to/directory');
    
    $iterator->setFlags(FilesystemIterator::KEY_AS_PATHNAME);
    
    foreach ($iterator as $item) {
    
        echo $iterator->key() . "n";
    
    }
    
    


    이 코드는 디렉토리 내의 파일과 디렉토리의 이름을 키 값으로 사용합니다.

    또한, 디렉토리 내의 파일과 디렉토리를 정렬한 후 FilesystemIterator를 사용하는 방법도 있습니다.

    #hostingforum.kr
    php
    
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/path/to/directory'));
    
    $iterator->setFlags(RecursiveIteratorIterator::CHILD_FIRST);
    
    foreach ($iterator as $item) {
    
        echo $iterator->getSubPathName() . "n";
    
    }
    
    


    이 코드는 디렉토리 내의 파일과 디렉토리를 정렬한 후 키 값을 반환합니다.

    위의 코드는 디렉토리 내의 파일과 디렉토리의 순서에 따라 키 값을 반환할 수 있습니다.

    2025-07-17 05:56

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 36,831건 / 2 페이지

검색

게시물 검색