웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
array_multisort를 이용한 간단한 순위체크
2002.08.28 17:36
전번에 힛순으로 정렬해야하는 어려움이 생겼었는데
그때 우연히 알게된 함수입니다;
일단. 배열이 여러게 있습니다 $hit ,$name $memo 이정도.
배열의 내용은
$hit=array("12","1","13");
$name=array("두기","제로","야미");
$memo=array("아싸-_-","난 제로다","우리자기 최고");
이렇다고봅니다.
이게 의미하는건 $name[0]이 쓴글은 $memo[0] 이란 글이고 $hit[0]힛을 기록했다
뭐 이렇게 볼수있습니다.
그러니까 "두기"가 쓴글은 "아싸-_-"가 되고 힛은 12힛
"제로"가 쓴글은 "난제로다"힛은 "1"힛이 되겠죠
그리고 "야미"가 쓴글은 "우리자기최고" 이며 13힛을 기록했습니다.
이걸 힛순으로 정렬해봅시다.
array_multisort($hit,SORT_DESC,$name,$memo);
간단하게 한줄만 넣으면 $hit배열이 크기대로 재배열됩니다.
뭐라구요? 그럼 $name,$memo배열이랑 순서가 틀려지니까
누가뭘썻는지 모른다구요? 아닙니다. 뒤에 $name,$memo를 추가했죠?
그건 $hit에서 니짝이 움직이는대로 따라서 재배열되라. 하는 함수같은겁니다;
$hit배열은 큰숫자가 앞쪽에 위치하고.
나머지 배열들은 $hit배열이 움직이 고대로 따라가죠.
"SORT_DESC"부분을 딴걸로 바꾸면 따르게 정렬도 된다네요.
다음은 예제입니다
<?
$hit=array("12","1","13");
$name=array("두기","제로","야미");
$memo=array("아싸-_-","난 제로다","우리자기 최고");
array_multisort($hit,SORT_DESC,$name,$memo);
for($i=0;$i<count($hit);$i++){
$no=$i+1;
echo"현재순위 $no 등 / $hit[$i]힛 - $name[$i] 님이 쓰신 '$memo'라는글입니다.<br>";
}
?>
결과
현재순위 1 등 / 13힛 - 야미 님이 쓰신 '우리자기 최고'라는글입니다.
현재순위 2 등 / 12힛 - 두기 님이 쓰신 '아싸-_-'라는글입니다.
현재순위 3 등 / 1힛 - 제로 님이 쓰신 '난 제로다'라는글입니다.
array_mutisort 함수란?
사용법: bool array_multisort (array ar1 [, mixed arg [, mixed ... [, array ...]]])
Array_multisort() 는 다중 배열에 대해서 여러개의 배열을 한번에 정렬하거나 다차원 배열
에서 내부에 포함되는 가가각의 배열을 정렬하는데 사용된다. 정렬될 때 키값도 유지된다.
입력된 배열은 행에 의해 정렬하는 테이블의 열과도 같이 생각할 수 있다. - 이는 SQL의 OR
DER BY절과 그 기능이 유사하다. 첫번째 오는 배열이 먼저 정렬 된다. 배열의 행(값)
이 함수의 매개변수 구조는 약간 독특하지만, 유연하다. 처음의 매개변수는 배열이어야 하며
, 다음에 나오는 각각의 매개변수는 배열이거나 혹은 다음의 글래그 리스트에 있는 정렬 플
래그일 수 있다.
정렬 방법 플래그:
SORT_ASC - 오름차순으로 정렬
SORT_DESC - 내림차순으로 정렬
정렬 형태 플래그:
SORT_REGULAR - 통상적으로 아이템을 비교
SORT_NUMERIC - 수치로서 아이템을 정렬
SORT_STRING - 문자열로서 아이템을 정렬
각각의 배열에는 같은 타입의 정렬 플래그 두개가 지정될 수 없다. 배열 매개변수에 명기된
정렬 플래그는 단지 그 배열에만 적용된다 - 이는 새로운 배열이 매개변수로 오기 전에 기
본값인 SORT_ASC와 SORT_REGULAR 로 리셋된다.
성공시에 참을 반환하며, 실패시에 거짓을 반환한다.
예 1. Sorting multiple arrays
$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);
예를 들어, 정렬 후에 처음 배열은 10,"a",100,100 을 포함한다. 두번째 배열은 1,1,2,"3"
을 포함한다. 첫번째 배열의 각각의 엔트리(100 과 100)와 대응되는 두번째 배열의 엔트리
또한 정렬된다.예 2. 다차원 배열의 정렬
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
이 예에서 정렬 후 처음 배열은 10, 100, 100, "a"(이는 문자열로 처리되어 오름차순으로 정
렬.), 그리고 두번째 배열은 1, 3, "2", 1 (숫자로 처리되어 내림차순으로 정렬)을 갖는다.
함수설명 : http://modulang.net 에서..
그때 우연히 알게된 함수입니다;
일단. 배열이 여러게 있습니다 $hit ,$name $memo 이정도.
배열의 내용은
$hit=array("12","1","13");
$name=array("두기","제로","야미");
$memo=array("아싸-_-","난 제로다","우리자기 최고");
이렇다고봅니다.
이게 의미하는건 $name[0]이 쓴글은 $memo[0] 이란 글이고 $hit[0]힛을 기록했다
뭐 이렇게 볼수있습니다.
그러니까 "두기"가 쓴글은 "아싸-_-"가 되고 힛은 12힛
"제로"가 쓴글은 "난제로다"힛은 "1"힛이 되겠죠
그리고 "야미"가 쓴글은 "우리자기최고" 이며 13힛을 기록했습니다.
이걸 힛순으로 정렬해봅시다.
array_multisort($hit,SORT_DESC,$name,$memo);
간단하게 한줄만 넣으면 $hit배열이 크기대로 재배열됩니다.
뭐라구요? 그럼 $name,$memo배열이랑 순서가 틀려지니까
누가뭘썻는지 모른다구요? 아닙니다. 뒤에 $name,$memo를 추가했죠?
그건 $hit에서 니짝이 움직이는대로 따라서 재배열되라. 하는 함수같은겁니다;
$hit배열은 큰숫자가 앞쪽에 위치하고.
나머지 배열들은 $hit배열이 움직이 고대로 따라가죠.
"SORT_DESC"부분을 딴걸로 바꾸면 따르게 정렬도 된다네요.
다음은 예제입니다
<?
$hit=array("12","1","13");
$name=array("두기","제로","야미");
$memo=array("아싸-_-","난 제로다","우리자기 최고");
array_multisort($hit,SORT_DESC,$name,$memo);
for($i=0;$i<count($hit);$i++){
$no=$i+1;
echo"현재순위 $no 등 / $hit[$i]힛 - $name[$i] 님이 쓰신 '$memo'라는글입니다.<br>";
}
?>
결과
현재순위 1 등 / 13힛 - 야미 님이 쓰신 '우리자기 최고'라는글입니다.
현재순위 2 등 / 12힛 - 두기 님이 쓰신 '아싸-_-'라는글입니다.
현재순위 3 등 / 1힛 - 제로 님이 쓰신 '난 제로다'라는글입니다.
array_mutisort 함수란?
사용법: bool array_multisort (array ar1 [, mixed arg [, mixed ... [, array ...]]])
Array_multisort() 는 다중 배열에 대해서 여러개의 배열을 한번에 정렬하거나 다차원 배열
에서 내부에 포함되는 가가각의 배열을 정렬하는데 사용된다. 정렬될 때 키값도 유지된다.
입력된 배열은 행에 의해 정렬하는 테이블의 열과도 같이 생각할 수 있다. - 이는 SQL의 OR
DER BY절과 그 기능이 유사하다. 첫번째 오는 배열이 먼저 정렬 된다. 배열의 행(값)
이 함수의 매개변수 구조는 약간 독특하지만, 유연하다. 처음의 매개변수는 배열이어야 하며
, 다음에 나오는 각각의 매개변수는 배열이거나 혹은 다음의 글래그 리스트에 있는 정렬 플
래그일 수 있다.
정렬 방법 플래그:
SORT_ASC - 오름차순으로 정렬
SORT_DESC - 내림차순으로 정렬
정렬 형태 플래그:
SORT_REGULAR - 통상적으로 아이템을 비교
SORT_NUMERIC - 수치로서 아이템을 정렬
SORT_STRING - 문자열로서 아이템을 정렬
각각의 배열에는 같은 타입의 정렬 플래그 두개가 지정될 수 없다. 배열 매개변수에 명기된
정렬 플래그는 단지 그 배열에만 적용된다 - 이는 새로운 배열이 매개변수로 오기 전에 기
본값인 SORT_ASC와 SORT_REGULAR 로 리셋된다.
성공시에 참을 반환하며, 실패시에 거짓을 반환한다.
예 1. Sorting multiple arrays
$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);
예를 들어, 정렬 후에 처음 배열은 10,"a",100,100 을 포함한다. 두번째 배열은 1,1,2,"3"
을 포함한다. 첫번째 배열의 각각의 엔트리(100 과 100)와 대응되는 두번째 배열의 엔트리
또한 정렬된다.예 2. 다차원 배열의 정렬
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
이 예에서 정렬 후 처음 배열은 10, 100, 100, "a"(이는 문자열로 처리되어 오름차순으로 정
렬.), 그리고 두번째 배열은 1, 3, "2", 1 (숫자로 처리되어 내림차순으로 정렬)을 갖는다.
함수설명 : http://modulang.net 에서..
댓글 4
-
투유
2002.08.31 19:02
-
大罪人SmHS-_-;;
2002.08.29 11:31
두기님 감사합니다.. ㅋㅋ -
ZipShin
2002.08.29 20:48
유용한 강좌이네요;; 배열에 대해서 좋은 자료 찾았다!! -
토끼군
2002.09.06 17:20
투유// 예제잖습니까-_-;;
array_multisort에서 저런 기능도 있었군요;; 몰랐는데. (-multi-는 어디다 빼먹고선..;;)
최근에 씌여진 글인가봐요?