2차원 연관 배열
Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 31번째.
지금까지 숫자 인덱스를 사용하는 2차원 배열을 다루어 왔지만, 메인 레벨과 중첩된 배열 모두에서 연관 배열을 사용하여 더 구조화된 데이터를 생성할 수도 있습니다. 이 방식은 숫자 대신 문자열 키를 사용하므로 데이터를 훨씬 더 설명적이고 이해하기 쉽게 만들어 줍니다.
각 요소가 의미 있는 문자열 키를 갖는 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"]
];
?>이 구조는 사용자 프로필, 제품 카탈로그 또는 각 항목에 대해 여러 관련 속성을 저장해야 하는 모든 시나리오와 같이 복잡한 데이터를 구성하는 데 매우 강력합니다. 문자열 키는 코드를 자체 문서화(self-documenting)하게 만들며, 숫자 위치를 기억하는 것보다 유지 관리가 훨씬 쉽습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
챌린지
쉬움하나의 입력을 받게 됩니다: JSON 형식의 제품 인벤토리를 나타내는 2차원 연관 배열입니다. 각 제품은 고유한 제품 ID를 키로 가지며, 값은 제품의 "name"과 "price"를 포함하는 연관 배열입니다. 입력을 읽고, JSON 문자열을 2차원 연관 배열로 변환한 다음, 모든 제품을 순회하며 각 제품의 정보를 ID: [product_id] - Name: [name] - Price: $[price] 형식으로 출력하세요.
각 제품은 별도의 줄에 출력되어야 합니다.
입력 형식: 제품 인벤토리를 나타내는 JSON 객체가 포함된 한 줄 (예시: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})
예상 출력: 각 제품이 ID: [product_id] - Name: [name] - Price: $[price] 형식으로 별도의 줄에 출력됩니다.
치트 시트
메인 레벨과 중첩된 배열 모두에서 문자열 키를 사용하여 2차원 연관 배열을 생성할 수 있습니다:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
]
];
?>또한 메인 배열에는 숫자 인덱스를 사용하고 내부에는 연관 배열을 사용하는 방식을 혼합하여 사용할 수도 있습니다:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>문자열 키를 사용하면 숫자 위치를 사용하는 것보다 데이터를 더 자명하게(self-documenting) 만들고 유지 관리하기 쉽게 해줍니다.
직접 해보기
<?php
// JSON 입력을 읽습니다
$input = fgets(STDIN);
// JSON을 연관 배열로 변환합니다
$inventory = (array)json_decode($input, true);
// TODO: 아래에 인벤토리를 반복하고 각 제품을 출력하는 코드를 작성하세요
?>이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.