$list 배열 재정렬후 출력순서 변경
본문
안녕하세요.
$list 배열 재정렬에 대해 문의드려요. 실력이 너무허접해서 도와주세요 ㅠ_ㅠ
만약 글이 10개있고
$list[0~9] 이있다고 가정하면
예를들어 $list[$i]['wr_hit'] 1개당 5점
$list[$i]['wr_good']은 1개당 10점
이렇게해서 점수를 매겨서
배열순서자체를 $list[1]번이 점수가높다면 점수가 낮은 $list[9]랑 바꿔서 출력순서를 바꾸고싶습니다.
어렵네요 ㅠㅠ 도와주세요.
foreach를 쓰면되는거같은데 잘안되네요
답변 2
해결한 방법도 남기면 도움이 되겠죠?
+ array_multisort() 함수를 사용하면 편합니다. usort() 함수를 사용하는 방법 등 다양한데 생략.
- https://www.php.net/manual/en/function.array-multisort.php
- http://docs.php.net/manual/kr/function.array-multisort.php
아래는 점수로 정렬인데, 정렬 조건 추가가 간편합니다. 예) 동점일 때 두 번째 정렬 기준 이름순이나 가입순 등
$order = []; // 정렬값
foreach ( $list as $k=>$val ) {
$order[] = $list[$k]['score'] = $val['wr_hit']*5 + $val['wr_good']*10;
}
array_multisort($order, SORT_ASC, SORT_NUMERIC, $list); // 점수순 / SORT_DESC 점수역순
해결했습니다 ㅎㅎ
답변을 작성하시기 전에 로그인 해주세요.