[PHP] 2차원 배열 정렬 by value


PHP 2차원 배열 값으로 정렬하기

# 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'];
})






© 2017. by isme2n