php 2차원 배열 특정 value 값으로 sort하기

devkhun·2020년 12월 1일
0

PHP 나만의 꿀

목록 보기
2/2
//정렬대상 array, 정렬 기준 key, 오름/내림차순
function arr_sort($array, $key, $sort='asc') {
	$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;
}


$arr = array(
	array('num' => 3, 'str' => 'e'),
	array('num' => 1, 'str' => 'd'),
	array('num' => 4, 'str' => 'c'),
	array('num' => 2, 'str' => 'b'),
	array('num' => 5, 'str' => 'a'),
	array('num' => 6, 'str' => 'f'),
	array('num' => 7, 'str' => 'g'),
	array('num' => 8, 'str' => 'h')
);

//배열의 str 값을 기준으로 오름차순으로 정렬한다
$result1 = arr_sort($arr,'str');

//배열의 num값을 기준으로 내림차순으로 정렬한다
$result2 = arr_sort($arr,'num','desc');
profile
가늘고 길게 간다

0개의 댓글