Menu
Coddy logo textTech

2차원 연관 배열

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

숫자 인덱스를 사용하여 2D 배열을 다뤄 왔지만, 주 수준과 중첩 배열 내부 모두에서 연관 배열을 사용하면 더 구조화된 데이터를 만들 수도 있습니다. 이 방식은 숫자 대신 문자열 키를 사용하므로 데이터를 훨씬 더 설명적으로 만들고 이해하기 쉽게 합니다.

각 요소가 의미 있는 문자열 키를 가지는 2차원 연관 배열을 만드는 방법은 다음과 같습니다.

<?php
$students = [
    "alice" => [
        "name" => "Alice Johnson",
        "grade" => 92
    ],
    "bob" => [
        "name" => "Bob Smith", 
        "grade" => 87
    ],
    "charlie" => [
        "name" => "Charlie Brown",
        "grade" => 95
    ]
];
?>

주 배열에는 숫자 인덱스를 사용하면서 내부에는 연관 배열을 유지하는 등 여러 접근 방식을 혼합할 수도 있습니다.

<?php
$users = [
    ["username" => "john_doe", "email" => "john@example.com"],
    ["username" => "jane_smith", "email" => "jane@example.com"]
];
?>

이 구조는 사용자 프로필, product 카탈로그 또는 각 항목에 대해 서로 관련된 여러 속성을 저장해야 하는 모든 상황과 같은 복잡한 데이터를 구성하는 데 매우 강력합니다. 문자열 키를 사용하면 코드가 스스로 설명하는 형태가 되며 숫자 위치를 기억하는 것보다 훨씬 쉽게 유지 관리할 수 있습니다.

challenge icon

챌린지

쉬움

JSON 형식의 product inventory를 나타내는 2D associative array인 입력 하나를 받습니다. 각 product에는 키로 사용되는 고유한 product ID가 있으며, 값은 product의 "name""price"를 포함하는 associative array입니다. 입력을 읽고, JSON 문자열을 2D associative array로 변환한 다음, 모든 products를 순회하며 각 product의 정보를 다음 형식으로 출력하세요: ID: [product_id] - Name: [name] - Price: $[price]

각 product는 별도의 줄에 출력해야 합니다.

입력 형식: product inventory를 나타내는 JSON 객체가 한 줄에 주어집니다(예: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}}).

예상 출력: 각 product를 다음 형식으로 별도의 줄에 출력합니다: ID: [product_id] - Name: [name] - Price: $[price]

직접 해보기

<?php
// JSON 입력을 읽습니다
$input = fgets(STDIN);

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

// TODO: 아래에 코드를 작성하여 inventory를 순회하고 각 제품을 출력하세요


?>
quiz icon실력 점검

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

논리 & 흐름의 모든 레슨

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