| | at : |


Archive

[PHP] php에서 배열/다차원 배열 정렬하기(sorting array in php) 하훌 rwxr-xr-x 4 1/04/2016



[PHP] php에서 배열/다차원 배열 정렬하기(sorting array in php)

Permission rw-r--r--
Author 하훌
Date and Time 1/04/2016
Label
License 크리에이티브 커먼즈 라이선스


PHP에서 배열을 정렬하기란 매우 간단합니다.
일단 Lib에서 제공하는 함수들이 있어 쉽게 정렬이 가능하지요. 많이 쓰이는 것만 추려보면 아래와 같습니다.

  • arsort() : 내림차순 정렬 및 인덱스 관계 유지
  • asort() : 오름차순 정렬 및 인덱스 관계 유지
  • ksort() : 키 기반 정렬
  • krsort() : 키 기반 역순 정렬
  • sort() : 정렬
  • rsort() : 역순 정렬

이친구들은 각각 역할을 가지고 배열을 정렬할 때 사용되는 함수입니다.
대체로 정렬에 key 값을 가지고 정렬을 하기 때문에 ksort, krsort가 많이 사용됩니다.

rsort 사용 예제를 보면 인자값으로 배열을 넘겨주면 정렬하여 해당 배열을 재 배열합니다.
그래서 foreach 문으로 루프를 돌며 정렬된 데이터를 확인하면, 정렬된 것을 확인할 수 있지요.

<?php
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>
// by php.net
1차원 배열의 경우는 이렇게 제공되는 함수를 사용하거나 간단하게 직접 만들어서 사용하면 편합니다. (학생 때 정렬 알고리즘 했던게 생각나네요)

그러나 2차원 배열은 기존 방법으로는 정렬이 어렵지요.
이유는 간단합니다. 같은 행에 있는 데이터를 어떻게 데리고 갈 것인가가 문제가 됩니다.
PHP에서 제공되는 함수는 기본적으로 1차원 배열을 기준으로 만들어진 함수이기 때문에 약간의 트릭을 이용하여 2차원 배열을 정렬해야 합니다.

일단 이 부분은 "array_multisort()" 함수를 제공해주기 때문에 어렵지 않게 완료할 수 있지만 상황에 따라 직접 코딩이 필요한 경우도 있습니다.

물론 검색하다보니 저랑 비슷한 고민을 하신분들이 있었고, KLDP에서 원하는 답을 찾을 수 있었습니다. 역시 이곳은 좋은 곳인듯..

없을걸요.. 함수를
글쓴이: kall 작성 일시: 월, 2006/06/19 - 11:59오전
없을걸요..

함수를 대충 만들어 쓰는 수 밖에는..
function tmpsort($a,$i)
{
  $ret = array();
  foreach( $a as $t )
  {
    $ret[$t[$i]] = $t;
  }
  ksort($ret);
  reset($ret);
  return array_values($ret);
}
이런식으로 간단한 형태로 정렬하는 함수를 만들어주셨고, 상황에 맞게 변형하여 사용하면 됩니다.

function Arraysort($a,$i)
{
  $ret = array();
  foreach( $a as $key => $t )
  {
    $ret[$t[$i].$key] = $t;
  }
  krsort($ret);
  reset($ret);
//rsort($ret);
  return array_values($ret);
}
?>
key 기준으로 역순으로 정렬하도록 구성하였습니다.

Reference

https://kldp.org/node/71285
http://php.net/manual/kr/function.rsort.php

Share







HAHWUL
HACKING | PENETRATION-TEST | CODING
HACKERONE : GIT : 0DAY-TODAY : EXPLOIT-DB : PACKETSTORM
GOOGLE+ | HAHWUL@GMAIL.COM | TWITTER
WWW.HAHWUL.COM






Recent Post

댓글 4개:

  1. Nice and good article.. it is very useful for me to learn and understand easily.. thanks for sharing your valuable information and time.. please keep updating.more 
    php jobs in hyderabad.

    답글삭제