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