일단 Lib에서 제공하는 함수들이 있어 쉽게 정렬이 가능하지요. 많이 쓰이는 것만 추려보면 아래와 같습니다.
- arsort() : 내림차순 정렬 및 인덱스 관계 유지
- asort() : 오름차순 정렬 및 인덱스 관계 유지
- ksort() : 키 기반 정렬
- krsort() : 키 기반 역순 정렬
- sort() : 정렬
- rsort() : 역순 정렬
이친구들은 각각 역할을 가지고 배열을 정렬할 때 사용되는 함수입니다.
대체로 정렬에 key 값을 가지고 정렬을 하기 때문에 ksort, krsort가 많이 사용됩니다.
rsort 사용 예제를 보면 인자값으로 배열을 넘겨주면 정렬하여 해당 배열을 재 배열합니다.
그래서 foreach 문으로 루프를 돌며 정렬된 데이터를 확인하면, 정렬된 것을 확인할 수 있지요.
<?php
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
// by php.net
1차원 배열의 경우는 이렇게 제공되는 함수를 사용하거나 간단하게 직접 만들어서 사용하면 편합니다. (학생 때 정렬 알고리즘 했던게 생각나네요) 그러나 2차원 배열은 기존 방법으로는 정렬이 어렵지요.
이유는 간단합니다. 같은 행에 있는 데이터를 어떻게 데리고 갈 것인가가 문제가 됩니다.
PHP에서 제공되는 함수는 기본적으로 1차원 배열을 기준으로 만들어진 함수이기 때문에 약간의 트릭을 이용하여 2차원 배열을 정렬해야 합니다.
일단 이 부분은 "array_multisort()" 함수를 제공해주기 때문에 어렵지 않게 완료할 수 있지만 상황에 따라 직접 코딩이 필요한 경우도 있습니다.
물론 검색하다보니 저랑 비슷한 고민을 하신분들이 있었고, KLDP에서 원하는 답을 찾을 수 있었습니다. 역시 이곳은 좋은 곳인듯..
없을걸요.. 함수를
글쓴이: kall 작성 일시: 월, 2006/06/19 - 11:59오전
없을걸요..
함수를 대충 만들어 쓰는 수 밖에는..
function tmpsort($a,$i)
{
$ret = array();
foreach( $a as $t )
{
$ret[$t[$i]] = $t;
}
ksort($ret);
reset($ret);
return array_values($ret);
}
이런식으로 간단한 형태로 정렬하는 함수를 만들어주셨고, 상황에 맞게 변형하여 사용하면 됩니다.
function Arraysort($a,$i)
{
$ret = array();
foreach( $a as $key => $t )
{
$ret[$t[$i].$key] = $t;
}
krsort($ret);
reset($ret);
//rsort($ret);
return array_values($ret);
}
?>
key 기준으로 역순으로 정렬하도록 구성하였습니다. Reference
https://kldp.org/node/71285http://php.net/manual/kr/function.rsort.php
HAHWULSecurity engineer, Gopher and H4cker! |
TEST1
ReplyDeleteINLINE TEST1
DeleteThank you :)
ReplyDelete