bool natcasesort ( array &$array )
(PHP 4, PHP 5)

이 함수는 키/값 연결을 유지하면서 알파벳, 숫자, 문자열을 정렬하는 알고리즘을 구현합니다. 이 알고리즘을 "자연순"이라고 말합니다. 이 함수는 성공할 경우 true를, 실패하면 false를 반환합니다.

<?php
 $array1 = $array2 = $array3 = array(
  'IMG0.png', 'img12.png', 'img10.png', 'img2.png', 
  'img1.png', 'IMG3.png' 
 );

 sort($array1);
 echo "일반 정렬\n";
 print_r($array1);
 /*
 결과:
 일반 정렬
 Array
 (
    [0] => IMG0.png
    [1] => IMG3.png
    [2] => img1.png
    [3] => img10.png
    [4] => img12.png
    [5] => img2.png
 )
 */


 // 이 함수는 대소문자 구분없이 정렬합니다.
 // 대소문자 구분이 필요하면, natsort를 사용해야 합니다.
 natcasesort($array2);
 echo "\n자연순 정렬 (대소문자 구분 없음)\n";
 print_r($array2);
 /*
 결과:
 자연순 정렬 (대소문자 구분 없음)
 Array
 (
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
 )
 */


 natsort($array3);
 echo "\n자연순 정렬\n";
 print_r($array3);
 /*
 결과:
 자연순 정렬
 Array
 (
    [0] => IMG0.png
    [5] => IMG3.png
    [4] => img1.png
    [3] => img2.png
    [2] => img10.png
    [1] => img12.png
 )
 */
 ?> 

이 함수는 배열 값을 알파벳순으로 정열해 주지만, 아쉽게도 배열 키는 정렬되지 않습니다. 정렬이 필요하다면 다음과 같이 array_values함수를 사용하여도 괜찮습니다.

<?php
 $array1 = $array2 = array(
  'IMG0.png', 'img12.png', 'img10.png', 'img2.png',
  'img1.png', 'IMG3.png');

 natcasesort($array1);
 echo "\n자연순 정렬 (대소문자 구분 없음)\n";
 print_r(array_values($array1));
 /*
 결과:
 자연순 정렬 (대소문자 구분 없음)
 Array
 (
    [0] => IMG0.png
    [1] => img1.png
    [2] => img2.png
    [3] => IMG3.png
    [4] => img10.png
    [5] => img12.png
 )
 */


 natsort($array2);
 echo "\n자연순 정렬\n";
 print_r(array_values($array2));
 /*
 결과:
 자연순 정렬
 Array
 (
    [0] => IMG0.png
    [1] => IMG3.png
    [2] => img1.png
    [3] => img2.png
    [4] => img10.png
    [5] => img12.png
 )
 */
 ?> 

[자연순] 정렬 우선 순위는 다음과 같습니다.

1-2 < 1-02 < 1-20 < 10-20 < fred < jane < pic01 < pic2 < pic02 < pic02a < pic3 < pic4 < pic 4 else < pic 5 < pic05 < pic 5 < pic 5 something < pic 6 < pic   7 < pic100 < pic100a < pic120 < pic121 < pic02000 < tom < x2-g8 < x2-y7 < x2-y08 < x8-y8

.외 추가 참고 자료는 아래 링크를 참고하세요.
http://sourcefrog.net/projects/natsort/

0 댓글