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 카탈로그 또는 각 항목에 대해 서로 관련된 여러 속성을 저장해야 하는 모든 상황과 같은 복잡한 데이터를 구성하는 데 매우 강력합니다. 문자열 키를 사용하면 코드가 스스로 설명하는 형태가 되며 숫자 위치를 기억하는 것보다 훨씬 쉽게 유지 관리할 수 있습니다.
챌린지
쉬움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를 순회하고 각 제품을 출력하세요
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 & 흐름의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러