Loading

블로그채널

Search !

[PHP] 강좌 #16 배열 정렬 함수 Sorting Array


우리는 많은 데이터를 입력받은 후 필요에 의해서 데이터를 정렬을 해야 합니다. 어떤 때는 오름차순으로 정리해야할 때가 있고 또 어떤 때는 내림차순으로 정리해야할 때가 있습니다.

 

메이저리그에서 홈런이 1위가 누구인지, 평균자책점 1위가 누군인지 알고 싶을 때 우리는정렬을 합니다. 예를 들어 데이터에 이름과 나이가 있다면 이름순으로 정렬해야할 때가 있고 또 나이순으로 정렬해야할 때가 있습니다. PHP는 정렬을 위해 여러 함수를 제공합니다.

 

함수를 만들어 내는 것은 어려운 일입니다. 복잡한 기능을 하는 함수를 만들려면 수학적 지식과 알고리즘의 이해가 필요합니다. 하지만 PHP에서 제공하는 함수를 사용하는 것은 어렵지 않아요. 저런 함수가 저런 기능을 하구나 정도만 익히는 것이 이번 시간의 목표입니다.

 

[PHP] 강좌 #16 배열 정렬 함수 Sorting Array

[PHP] 강좌 #16 배열 정렬 함수 Sorting Array

 


PHP - Sort Functions For Arrays
이번 시간에는 배열을 정렬해주는 함수(sort function)에 대해 다루어 보겠습니다.

sort() - 배열을 정렬합니다. 보통 정렬한다는 의미는 1,2,3처럼 오르차순으로 정렬하는 것입니다.
rsort() - 배열을 역순으로 정렬합니다. 그래서 reverse의 약자 r이 sort앞에 추가되었네요.
asort() - Associative Arrays(키 값, 내용 배열)을 내용 기준으로 오름차순으로 정렬합니다.
sort앞에 a는 Associative를 의미합니다. Associative를 연관이라는 말로 해석하는 경향이 많은데요, 마음에 들지 않습니다.
ksort() - Associative 배열에서 asort가 내용을 기준으로 했다면 ksort는 키 값을 기준으로 정렬합니다.

 

나머지 함수는 어렵지 않은데요, asort와 ksort를 역순으로 정렬하는 함수가 남아 있습니다. a와 k글자 뒤에 reverse 의미인 r를 넣어주면 됩니다.

 

arsort() - Associative 배열에서 내용 기준, 역순으로 정렬합니다.
krsort() - Associative 배열에서 키 값 기준, 역순으로 정렬합니다.

 

예제를 다루어보기 전에 2가지 함수를 만들었습니다. 배열을 출력해주는 함수를 2가지 형태로 만들었습니다. 하나는 일반적인 배열을 출력해주는 printA 함수이고 또 하나는 Associative 배열을 출력해주는 printAA 함수입니다.

 

function printA($arr) {
    foreach ($arr as $value) {
        echo "$value, ";
    } 
    echo "<.br.>";
}

 

function printAA($aarr) {
    foreach ($aarr as $key => $value) {
    echo "($key, $value), ";
   
    echo "<.br.>";
}

 

Sort Array in Ascending Order - sort()
sort함수를 사용한 정렬입니다.

 

$fruits = array("Coconut", "Apple", "Banana");
sort($fruits);
printA($fruits);

 

[출력]
Apple, Banana, Coconut,

 

 

Sort Array in Descending Order - rsort()
rsort함수를 사용한 정렬입니다.

 

$fruits = array("Coconut", "Apple", "Banana");
sort($fruits);
printA($fruits);

 

[출력]
Coconut, Banana, Apple,

 

Sort Array (Ascending Order), According to Value – asort()
asort함수를 사용한 정렬입니다. 아래 결과값을 확인하면 내용 기준으로 오름차순으로 정렬되어 있다는 것을 알 수 있습니다.

 

$age = array("cano"=>"33", "anderson"=>"22", "baez"=>"19");
asort($age);
printAA($age);

 

[출력]
(baez, 19), (anderson, 22), (cano, 33),

 

Sort Array (Ascending Order), According to Key - ksort()
ksort함수를 사용한 정렬입니다. 아래 결과값을 확인하면 키 값 기준으로 오름차순으로 정렬되어 있다는 것을 알 수 있습니다.

 

$age = array("cano"=>"33", "anderson"=>"22", "baez"=>"19");
ksort($age);
printAA($age);

 

[출력]
(anderson, 22), (baez, 19), (cano, 33),

 

Sort Array (Descending Order), According to Value – arsort()
arsort함수는 내용을 역순으로 정렬해줍니다.

 

$age = array("cano"=>"33", "anderson"=>"22", "baez"=>"19");
arsort($age);
printAA($age);

 

[출력]
(cano, 33), (anderson, 22), (baez, 19),

 

Sort Array (Descending Order), According to Key – krsort()
krsort함수는 키 값을 역순으로 정렬해줍니다.

 

$age = array("cano"=>"33", "anderson"=>"22", "baez"=>"19");
krsort($age);
printAA($age);

 

[출력]
(cano, 33), (baez, 19), (anderson, 22),

 

이외에도 배열을 다루는 많은 함수들이 존재합니다.
http://www.w3schools.com/php/php_ref_array.asp

 

내일이 PHP Tutorial 마지막 시간입니다. 앞으로 실무적인 진도를 더 나갈지 여기서 강좌를 끝낼지 여러분들의 의견을 경청하겠습니다. 젠은 해도 되고 안해도 되고 그렇습니다.


실무적인 진도를 더 나간다면 남아있는 커리큘럼은 다음과 같습니다.

PHP Forms,
PHP Advanced,
MySQL Database,
PHP - XML,
PHP -AJAX,
PHP Examples

 

수고하셨습니다. ^^