정렬 (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>'; } ?>
그럼 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>'; } ?>
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>'; } ?>
결과와 같이 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>'; } ?>
결과에 보듯이 값이 내림차순으로 표시됩니다.
인덱스를 보니 숫자로 수정되었습니다.
인덱스를 유지하면서 내림차순으로 표시하려면 어떻게 할까요?
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>'; } ?>
결과와 같이 인덱스가 있고 값은 내림차순으로 표시됩니다.
점수와 관계없이 즉 값과 관계없이 키를 기준으로 정렬을 하려면 어떻게 할까요?
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>'; } ?>
결과를 보면 인덱스로 정렬됨을 알 수 있습니다.
그럼 인덱스를 기준으로 내림차순으로 표시하려면 어떻게 할까요?
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>'; } ?>
봐주셔서 감사합니다. 그럼 이만~~ 다음 강좌로 갈까요?