테스트 사이트 - 개발 중인 베타 버전입니다

$list 배열 재정렬후 출력순서 변경 채택완료

그누sirkr 5년 전 조회 3,539

안녕하세요.

 

$list 배열 재정렬에 대해 문의드려요. 실력이 너무허접해서 도와주세요 ㅠ_ㅠ

 

만약 글이 10개있고

 

$list[0~9] 이있다고 가정하면

 

예를들어 $list[$i]['wr_hit'] 1개당 5점

$list[$i]['wr_good']은 1개당 10점

 

이렇게해서 점수를 매겨서

 

배열순서자체를 $list[1]번이 점수가높다면 점수가 낮은 $list[9]랑 바꿔서 출력순서를 바꾸고싶습니다.

 

어렵네요 ㅠㅠ 도와주세요.

foreach를 쓰면되는거같은데 잘안되네요 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
B
5년 전

해결한 방법도 남기면 도움이 되겠죠?

+ array_multisort() 함수를 사용하면 편합니다. usort() 함수를 사용하는 방법 등 다양한데 생략.

- https://www.php.net/manual/en/function.array-multisort.php

- http://docs.php.net/manual/kr/function.array-multisort.php

아래는 점수로 정렬인데, 정렬 조건 추가가 간편합니다. 예) 동점일 때 두 번째 정렬 기준 이름순이나 가입순 등

</p>

<p>$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 점수역순</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

그누sirkr
5년 전
넵 array_multisort를 이용해서 해결했네요!
더 자세한 답변 감사드립니다! 덕분에 더 깔끔하게 작동하네요!

댓글을 작성하려면 로그인이 필요합니다.

5년 전

해결했습니다 ㅎㅎ

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인