정렬 (sort)

앞에서 배열에 대해서 알아봤습니다.

이 배열의 값을 정렬하는 방법에 대해 알아볼게요. ^^

자 다음과 같은 성적에 관한 배열이 있습니다.

$score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

정렬을 할 때 사용하는 함수는 sort입니다.

sort 함수 사용 방법

sort(배열변수명);

자 그럼 배열을 foreach문을 사용하여 출력해봅시다.

<?php
    $score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

    foreach($score as $key => $value){
        echo $key.'의 점수는 '.$value.'<br>';
    }
?>
php sort

그럼 sort함수를 사용하여 위의 코드를 다시 실행해 봅시다.

<?php
    $score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

    sort($score);

    echo '<pre>';
    var_dump($score);
    echo '</pre>';

    foreach($score as $key => $value){
        echo $key.'의 점수는 '.$value.'<br>';
    }
?>
php sort

sort함수를 사용했더니 인덱스(키)는 0,1,2 순으로 숫자로 변하고 값은 작은 순에서 큰순으로 오름차순으로 나타납니다.

자 그럼 인덱스(키)를 유지하면서 점수를 정렬하는 방법에 대해 알아봅시다.

asort 함수를 사용합니다.

asort 함수 사용 방법

asort(배열변수명);

그럼 예제를 통해 확인해 봅시다.

<?php
    $score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

    asort($score);

    echo '<pre>';
    var_dump($score);
    echo '</pre>';

    foreach($score as $key => $value){
        echo $key.'의 점수는 '.$value.'<br>';
    }
?>
php asort

결과와 같이 asort를 사용하면 인덱스(키)도 유지하고 값은 오름차순으로 표시됩니다.

그럼 내림차순은 어떻게 할까요?

rsort 함수를 사용합니다.

rsort 함수 사용 방법

rsort(배열변수명);

그럼 rsort를 사용하여 결과를 확인합시다.

<?php
    $score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

    rsort($score);

    echo '<pre>';
    var_dump($score);
    echo '</pre>';

    foreach($score as $key => $value){
        echo $key.'의 점수는 '.$value.'<br>';
    }
?>
php rsort

결과에 보듯이 값이 내림차순으로 표시됩니다.

인덱스를 보니 숫자로 수정되었습니다.

인덱스를 유지하면서 내림차순으로 표시하려면 어떻게 할까요?

arsort를 사용합니다.

arsort 함수 사용 방법

arsort(배열변수명);

그럼 arsort를 사용하여 결과를 확인합시다.

<?php
    $score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

    arsort($score);

    echo '<pre>';
    var_dump($score);
    echo '</pre>';

    foreach($score as $key => $value){
        echo $key.'의 점수는 '.$value.'<br>';
    }
?>
php arsort

결과와 같이 인덱스가 있고 값은 내림차순으로 표시됩니다.

점수와 관계없이 즉 값과 관계없이 키를 기준으로 정렬을 하려면 어떻게 할까요?

ksort 함수를 사용합니다.

ksort는 오름차순입니다.

즉, a,b,c,d,e,f 순으로 정렬됩니다.

ksort 함수 사용 방법

ksort(배열변수명);

그럼 ksort를 사용하여 결과를 확인합시다.

<?php
    $score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

    ksort($score);

    echo '<pre>';
    var_dump($score);
    echo '</pre>';

    foreach($score as $key => $value){
        echo $key.'의 점수는 '.$value.'<br>';
    }
?>
php ksort

결과를 보면 인덱스로 정렬됨을 알 수 있습니다.

그럼 인덱스를 기준으로 내림차순으로 표시하려면 어떻게 할까요?

z,y,x 순으로 표시하려면 krsort()를 사용합니다.

krsort 함수 사용 방법

krsort(배열변수명);

그럼 krsort 사용하여 결과를 확인합시다.

<?php
    $score = array(
    'math' => 90,
    'science' => 80,
    'english' => 100,
    'japanese' => 76,
    'coding' => 98,
    'social' => 68,
    'history' => 58,
    );

    krsort($score);

    echo '<pre>';
    var_dump($score);
    echo '</pre>';

    foreach($score as $key => $value){
        echo $key.'의 점수는 '.$value.'<br>';
    }
?>
php krsort

봐주셔서 감사합니다. 그럼 이만~~ 다음 강좌로 갈까요?