Friday, May 25, 2007
PHP 문자열 배열 정렬/소트/소팅 함수, 대소문자 구분 없이; Sort Ignore Case, String Array
PHP 에서 배열 요소들을 순서대로 정렬하는 방법입니다. 영문 문자열 배열일 경우, 대소문자를 구분하지 않고 정렬하는 것이 자연스럽습니다.
C언어의 qsort() 함수처럼, PHP에서는 usort / sort 등의 함수를 사용할 수 있습니다.
usort 함수에 'strcasecmp' 라는 비교 함수 (Comparison Function) 를 넣으면 대소문자 구분 없이 소팅됩니다. 그런데 비교 함수 뒤에는 소괄호를 붙이면 안됩니다. strcasecmp() 이렇게 하면 PHP Warning: usort(): Invalid comparison function (잘못된 비교 함수) 이런 경고가 나오고 소팅도 되지 않습니다.
소스 파일명: example.php
C언어의 qsort() 함수처럼, PHP에서는 usort / sort 등의 함수를 사용할 수 있습니다.
usort 함수에 'strcasecmp' 라는 비교 함수 (Comparison Function) 를 넣으면 대소문자 구분 없이 소팅됩니다. 그런데 비교 함수 뒤에는 소괄호를 붙이면 안됩니다. strcasecmp() 이렇게 하면 PHP Warning: usort(): Invalid comparison function (잘못된 비교 함수) 이런 경고가 나오고 소팅도 되지 않습니다.
usort, sort, strcasecmp 함수 사용 예제
소스 파일명: example.php
<html>
<head>
<title>PHP Example</title>
</head>
<body>
<?php
// 요소들이 순서 없이 섞여 있는 배열
$a = array("bbb", "AA", "c", "ZZ", "ZZ2", "ZZ10", "CCC", "aa", "BBBB");
// 대소문자 구분없이 소팅하기
// 실용적임
usort($a, 'strcasecmp');
print_r($a);
/* 출력 결과:
Array
(
[0] => aa
[1] => AA
[2] => bbb
[3] => BBBB
[4] => c
[5] => CCC
[6] => ZZ
[7] => ZZ10
[8] => ZZ2
)
*/
// 대소문자 구분하여 소트
sort($a);
print_r($a);
/* 출력 결과
Array
(
[0] => AA
[1] => BBBB
[2] => CCC
[3] => ZZ
[4] => ZZ10
[5] => ZZ2
[6] => aa
[7] => bbb
[8] => c
)
*/
?>
</body>
</html>
<head>
<title>PHP Example</title>
</head>
<body>
<?php
// 요소들이 순서 없이 섞여 있는 배열
$a = array("bbb", "AA", "c", "ZZ", "ZZ2", "ZZ10", "CCC", "aa", "BBBB");
// 대소문자 구분없이 소팅하기
// 실용적임
usort($a, 'strcasecmp');
print_r($a);
/* 출력 결과:
Array
(
[0] => aa
[1] => AA
[2] => bbb
[3] => BBBB
[4] => c
[5] => CCC
[6] => ZZ
[7] => ZZ10
[8] => ZZ2
)
*/
// 대소문자 구분하여 소트
sort($a);
print_r($a);
/* 출력 결과
Array
(
[0] => AA
[1] => BBBB
[2] => CCC
[3] => ZZ
[4] => ZZ10
[5] => ZZ2
[6] => aa
[7] => bbb
[8] => c
)
*/
?>
</body>
</html>
tag: php
PHP
<< Home