Menu
Coddy logo textTech

연관 배열 값 기준 정렬

Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨. 68개 중 22번째.

associative 배열을 다룰 때는 키-값 관계를 유지하면서 값에 따라 정렬해야 하는 경우가 많습니다. PHP는 이러한 목적을 위해 두 가지 특수 함수를 제공합니다. 오름차순에는 asort()를, 내림차순에는 arsort()를 사용합니다.

다음은 asort()가 값을 오름차순으로 정렬하는 방식입니다:

<?php
$students = [
    "Alice" => 85,
    "Bob" => 92,
    "Charlie" => 78,
    "Diana" => 96
];

asort($students);
print_r($students);
// 출력: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>

성적이 이제 가장 낮은 것부터 가장 높은 것까지 정렬되었지만, 각 학생의 이름은 여전히 해당 성적과 올바르게 연결되어 있는 것을 확인하세요. 이것이 일반적인 sort()에 비해 asort()가 갖는 핵심적인 장점입니다. 키와 값 사이의 연관 관계를 유지합니다.

내림차순의 경우 arsort()는 비슷하게 작동하지만 값을 가장 높은 값부터 가장 낮은 값 순으로 정렬합니다:

<?php
arsort($students);
print_r($students);
// 출력: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

두 함수 모두 인덱스 array 대응 함수와 마찬가지로 원본 array를 직접 수정합니다. 따라서 학생 성적, 제품 prices 또는 키-값 쌍을 그대로 유지하면서 값으로 sort해야 하는 모든 상황과 같은 데이터를 정리하는 데 매우 적합합니다.

challenge icon

챌린지

쉬움

하나의 입력을 받습니다. 입력은 JSON 형식의 직원 이름과 급여로 이루어진 associative 배열입니다. 입력을 읽고, JSON 문자열을 배열로 변환한 다음, arsort()를 사용하여 급여를 기준으로 직원들을 descending 순서(높은 급여부터 낮은 급여 순)로 정렬하고, print_r()를 사용하여 정렬된 배열을 출력하세요.

입력 형식: 직원 이름을 키로, 급여를 값으로 포함하는 JSON 객체가 한 줄에 주어집니다(예: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000}).

예상 출력: 급여 값을 기준으로 descending 순서로 정렬된 associative 배열을 print_r()를 사용하여 표시합니다.

직접 해보기

<?php
// 입력 읽기
$input = fgets(STDIN);

// JSON을 연관 배열로 변환
$employees = (array)json_decode($input, true);

// TODO: 아래에 급여 기준 내림차순으로 배열을 정렬하는 코드를 작성하세요


// 정렬된 배열 출력
print_r($employees);
?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 PHP 컴파일러