그러냐

php 다차원 배열 랭크 정렬등 본문

php

php 다차원 배열 랭크 정렬등

관절분리 2023. 2. 2. 16:35
반응형

개발 중인 소스

 

디비내용을 배열에 넣어놓고 

 

각 배열의 카운트에 랭킹을 매기고

 

배열로 리턴

 

	$arr = array();
	$arry = array();
	
	$s1="select ac.*,cp.COOP_NM from ".$tb_name." as ac
			join COOP_MNG as cp
			  on (vio.COOP_IDX=cp.IDX)
			  ".$where ;
	$q1 = mysqli_query($con,$s1);
	while($rst=@mysqli_fetch_array($q1)){
		$arr[1][$rst['COOP_NM']]++;
		$arr[2][$PTTNarr[$rst['PTTN']][1]]++;
		$arr[3][$PTTNarr[$rst['PTTN']][0]]++;
		
	}
	//벌점 순위 
	$num1 = array();
	foreach($arr[1] as $ar){
		$num1[] = $ar;
	}

	foreach($arr[1] as $key=>$ar){
		$arry[1][$key] = array($ar,rank($ar, $num1));
	}
	
	$sort = array();
	foreach ($arry[1] as $key => $ar) {
		$sort[$key] = $ar[1];
	}
	array_multisort($sort, SORT_ASC, $arry[1]);

	//유형별 순위 
	$num2 = array();
	foreach($arr[2] as $ar){
		$num2[] = $ar;
	}

	foreach($arr[2] as $key=>$ar){
		$arry[2][$key] = array($ar,rank($ar, $num2));
	}
	
	$sort = array();
	foreach ($arry[2] as $key => $ar) {
		$sort[$key] = $ar[1];
	}
	array_multisort($sort, SORT_ASC, $arry[2]);

	//등급별 순위 
	$num3 = array();
	foreach($arr[3] as $ar){
		$num3[] = $ar;
	}

	foreach($arr[3] as $key=>$ar){
		$arry[3][$key] = array($ar,rank($ar, $num3));
	}
    
    
    
    
function rank($value, $arr) {
	$sorted = $arr;
	rsort($sorted);
	$rank = array_search($value,$sorted);
	if($rank !== false ) return $rank+1;
	return false;
}

 

참고 사이트

 

https://zetawiki.com/wiki/PHP_rank() 

 

PHP rank() - 제타위키

다음 문자열 포함...

zetawiki.com

https://ponyozzang.tistory.com/218

 

PHP array_multisort 다차원 배열 정렬 예제

1차원 배열의 경우에는 간단하게 정렬을 할 수 있습니다.2차원 배열등 다차원 배열의 경우에는 어떻게 하는지 확인을 해보도록 하겠습니다. $array = array( array( 'id' => 0, 'track_num' => 7, 'title' => 'FAKE L

ponyozzang.tistory.com

 

반응형