2014-06-05 4 views
2

내가PHP의 FilesystemIterator의 순서를 결정하고 변경할 수 있습니까?

$it = new FilesystemIterator('/path/of/files/to/iterate/over'); 
foreach ($it as $fileinfo) { 
    echo $fileinfo->getFilename(); 
} 

을하지만 파일이 처리되는 순서가 여기서 뭘하는 디렉토리에있는 파일을 통해 PHP로 반복하려면? 몇 가지 테스트를했지만 PHP가 사용하는 순서를 이해할 수없는 것 같습니다. 적어도 매번 같은 순서이지만 알파벳순, mtime, ctime 또는 atime은 아닙니다. 다른 이름으로 빈 파일을 만들어서이 작업을 시도했지만, 연대순 작성 순서로 표시되거나 알파벳순으로 정렬되지 않았습니다.

FilesystemIterator는 어떤 순서로 사용합니까? 그리고 왜? 주문을 변경할 수 있습니까?

+1

아마 디렉토리 파일에있는 입장의 다만 순서이다. 이것은 원래 파일이 작성된 순서와 거의 관련이 있지만 파일이 삭제됨에 따라 새 파일이 대체 될 수 있습니다. 그러나 예측할 수 없으며 전체 디렉토리를 복사하지 않으면 변경 될 수 없습니다. – Barmar

+3

기본적으로 "정렬 없음"순서가 있으므로 파일 시스템 자체에 의해 결정됩니다. 그리고 - 아니, 이것은 변경할 수 없습니다 –

답변

3

여기에 말한대로 DirectoryIterator sort, iterator iterates. 배열을 만들고 정렬해야합니다.

반복기는 컨테이너의 요소를 가로 지르는 데 사용되는 패턴입니다. 더 많은 것 : Iterator pattern

+0

하지만 반복자는 반환 된 데이터를 어딘가에서 가져와야합니다. 그리고이 "어딘가에"어떤 주문 (변경 가능 여부)이 있어야합니다. 사실 내 질문 이었어. ;) –

+1

네,하지만 iterator는 단독으로는 주문하지 않습니다. iterator_to_array를 인수로 FilesystemIterator와 함께 사용하고 결과 배열을 정렬합니다. –

+0

감사합니다.이 설명으로 답을 수락합니다. :) –

관련 문제