PHP에서 $files = new DirectoryIterator()를 사용한 후 항목을 어떻게 정렬합니까?

StackOverflow https://stackoverflow.com/questions/1076881

  •  21-08-2019
  •  | 
  •  

문제

PHP의 디렉토리에 있는 파일을 다음과 같이 가져올 수 있습니다.

$files = new DirectoryIterator() 

그런 다음 항목을 표시하기 위해 특정 순서로 항목을 정렬하는 쉬운 방법이 있습니까?감사해요.

도움이 되었습니까?

해결책

반복자 내에서 데이터를 정렬하는 방법이 없는 것 같습니다.

정렬하려는 값의 키를 사용하여 표시 데이터를 중간 배열에 배치하고 배열에서 ksort()를 호출할 수 있습니다.그러나 데이터에 대해 두 번의 패스가 필요합니다.

$path = ".";
$files = new DirectoryIterator($path);
$files_array = array();

while($files->valid()) {
        // sort key, ie. modified timestamp
        $key = $files->getMTime();
        $data = $files->getFilename();
        $files_array[$key] = $data;
        $files->next();
}
ksort($files_array);
foreach($files_array as $key => $file){
    print $key . " => " . $file . "\n";
}

편집하다:

파일에 대해 출력하려는 ​​모든 정보를 배열 값에 배치하는 경우 데이터를 다시 한 번 반복하는 대신 나중에 배열을 implode()하면 됩니다.

다른 팁

$files = new DirectoryIterator($path);
$i = 0;
$paths = array();
while($files->valid()) {
    $paths[$i++] = $files->getFileName();
    $files->next();
}
sort($paths)

당신이 찾고있는 것일 수 있습니다. 물론 그 후 선호도에 따라 경로를 정렬하기 위해 정렬 함수를 항상 적용 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top