자연 정렬은 문자 그대로 문자열 순서에 따라 분류하는 방법입니다. 기존의 알파벳 분류와 달리 Natsort ()는 숫자의 크기 관계를 고려합니다. 예를 들어:
file1.txt 는 file2.txt 앞에 있습니다
file10.txt 는 file2.txt 뒤에 순위가 매겨집니다
이 분류 방법은 단순한 알파벳 분류보다 우리의 일상적인 사고 방식과 더 일치합니다.
먼저 파일 이름이 포함 된 배열이 필요합니다. 일반적으로 scandir () 함수를 사용하여 모든 파일 이름을 디렉토리에서 가져올 수 있습니다.
$files = scandir('path/to/your/directory');
이 코드는 디렉토리의 모든 파일 및 하위 디렉토리의 이름을 포함하는 배열을 반환합니다. Scandir () 는 두 개의 특수 디렉토리를 반환합니다 . 그리고 .. 기본적으로, 우리는 그것들을 필터링해야 할 수도 있습니다.
파일 이름 배열을 얻은 후에는 Natsort () 함수를 호출하여 배열을 정렬 할 수 있습니다.
natsort($files);
Natsort ()는 파일 이름을 자연스럽게 정렬하여 "file1.txt"가 "file10.txt"보다 앞서 있습니다.
정렬이 완료되면 Foreach 루프를 통해 정렬 된 파일 이름을 출력 할 수 있습니다.
foreach ($files as $file) {
echo $file . "\n";
}
이런 식으로, 당신은 자연 순서로 정렬 된 파일 이름 목록을 볼 수 있습니다.
위의 단계를 결합하여 최종 코드는 다음과 같습니다.
<?php
// 디렉토리에서 모든 파일을 가져옵니다
$files = scandir('path/to/your/directory');
// 제거하다 . 그리고 .. 목차
$files = array_diff($files, array('.', '..'));
// 사용 natsort 파일 이름을 정렬하십시오
natsort($files);
// 정렬 된 파일 이름을 출력하십시오
foreach ($files as $file) {
echo $file . "\n";
}
?>
디렉토리에 다음 파일이 있다고 가정합니다.
file1.txt
file10.txt
file2.txt
file20.txt
Natsort () 를 정렬 한 후 출력은 다음과 같습니다.
file1.txt
file2.txt
file10.txt
file20.txt
Natsort () 함수는 원래 배열을 직접 수정하므로 호출하기 전에 새 배열에 값을 할당 할 필요가 없습니다.
리버스 정렬이 필요한 경우 Natsort ()를 사용하여 정렬 한 다음 Array_Ray_reverse () 함수를 사용할 수 있습니다.
Natsort () 는 사례에 민감하며 파일 이름에 대문자가 포함 된 경우 분류 결과에 영향을 줄 수 있습니다. 케이스 정렬을 무시 해야하는 경우 Natsort ()을 호출하기 전에 파일 이름을 통합 소문자 또는 대문자로 변환 할 수 있습니다.
예를 들어:
// 파일 이름을 소문자로 변환합니다
$files = array_map('strtolower', $files);
natsort($files);