본문 바로가기
Dev/PHP

PHP 2차원 배열 정렬

by 펭귄안에 온천 2022. 3. 29.
728x90
반응형
 
 # Code
function arr_sort( $array, $key, $sort ){
  $keys = array();
  $vals = array();
  foreach( $array as $k=>$v ){
    $i = $v[$key].'.'.$k;
    $vals[$i] = $v;
    array_push($keys, $k);
  }
  unset($array);

  if( $sort=='asc' ){
    ksort($vals);
  }else{
    krsort($vals);
  }
 
  $ret = array_combine( $keys, $vals );

  unset($keys);
  unset($vals);
 
  return $ret;
}
# Sample
$arr = array(
    array('name' => '홍길동', 'age' => '30')
  , array('name' => '임세준', 'age' => '25')
  , array('name' => '배성재', 'age' => '24')
  , array('name' => '김광현', 'age' => '33')
  , array('name' => '류현진', 'age' => '34')
);

//배열 내 age 값 기준으로 오름차순으로 정렬한다
$result = arr_sort( $arr, 'age' , 'asc' );

//배열 내 name 값 기준으로 내림차순으로 정렬한다
$result = arr_sort( $arr,'name', 'desc' );
# 다시 생각해 보니 usort()를 쓰자.
usort($arr , function(a,b){
  return $a['name'] - $b['name'];
})

usort($arr , function(a,b){
  return $b['name'] - $a['name'];
})
반응형

'Dev > PHP' 카테고리의 다른 글

PHP에서 한글을 substr로 짜를때 깨짐  (0) 2022.08.29
[PHP] Postgresql DB Connect Test  (0) 2022.04.19
Php에서 로그 남기고 실시간 확인  (0) 2022.03.29