728x90
반응형

 

https://www.delftstack.com/ko/howto/php/how-to-sort-an-array-of-associative-arrays-by-value-of-a-given-key-in-php/

 

PHP에서 주어진 키의 값으로 연관 배열 배열을 정렬하는 방법

이 기사에서는 PHP에서 주어진 키의 값으로 연관 배열의 배열을 정렬하는 방법을 소개합니다. 여기에는 array_multisort() 함수와 usort() 함수가 포함됩니다.

www.delftstack.com

이 포스트를 참조했습니다.

 

웹 페이지에서  어느 정보를 불러올 때 DB에서 또는 다중 배열에서 특정 키로 정렬해서 보여줘야할 때가 있다.

 

필자는 DB에서 어느 값들을 가져왔는데 이 값들에서 관리자가 순서 번호를 지정했다.

 

그런데 단순하게 받아온 값들은 순서에 상관없이 sql문으로 요청한 필드들의 값이 들어왔다.

 

관리자의 요구사항은 지정한 순서 번호대로 정렬하여 화면에 보여줘야 된다고 했다.

 

이때 array_multisort php 함수를 이용할 수 있다.

 

만약 DB에서 받아온다면 데이터들은 json 형식으로 되어 있을 것이다.

 

DBData 라고 변수를 선언한다면 다음과 같이 할 수 있겠다.

$DBData = 'DB 데이터 넣기'

$tempArray = array();
foreach($DBData as $key=>$val) {
    $tempArray[$key] = $val['원하는 키 값'];
}

array_multisort($tempArray, SORT_ASC, $DBData);

DBData 에 sql 문을 이용하여 필요한 값들을 저장하면 2차원 json 배열이 될 것 이다

 

예를 들면 다음과 같이 된다.

Array ( 
[0] => Array ( [serial] => 123 [link] => 123 [number] => 3 )

[1] => Array ( [serial] => 343 [link] => 2345 [number] => 1)

[2] => Array ( [serial] => 235 [link] => 234523 [number] => 2) 

)

foreach 문으로 1차원 배열로 분리하면서 key 값은 number라고 지정하면 tempArray에 number 값이 저장된다.

 

그리고 array_multisort 으로 해당 키로 오름차순으로 정렬하면 다음과 같이 된다.

 

Array ( 
[0] => Array ( [serial] => 343 [link] => 2345 [number] => 1  )

[1] => Array ( [serial] => 235 [link] => 234523 [number] => 2 )

[2] => Array ( [serial] => 123 [link] => 123 [number] => 3) 

)

 

이제 다시 foreach 문을 이용해서 해당 값들을 보여주면 된다.

foreach($DBData as $key=>$val) {
    print_r ($val['link']);
    
}
728x90
반응형

+ Recent posts