Menu
CoddyTech

Mảng kết hợp 2 chiều

Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 31 trên 68.

Khi làm việc với mảng 2D bằng chỉ số số học, bạn cũng có thể tạo dữ liệu có cấu trúc hơn bằng cách dùng mảng kết hợp ở cả cấp chính lẫn bên trong các mảng lồng nhau. Cách này dùng khóa dạng chuỗi thay vì số, giúp dữ liệu mô tả rõ hơn và dễ hiểu hơn.

Đây là cách tạo một mảng kết hợp 2D, trong đó mỗi phần tử có khóa chuỗi mang ý nghĩa:

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

Bạn cũng có thể kết hợp các cách làm, dùng chỉ số số học cho mảng chính và giữ các mảng kết hợp bên trong:

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

Cấu trúc này rất hữu ích để sắp xếp dữ liệu phức tạp như hồ sơ người dùng, danh mục sản phẩm hoặc bất kỳ trường hợp nào bạn cần lưu trữ nhiều thuộc tính liên quan cho mỗi mục. Các khóa dạng chuỗi giúp code tự mô tả và dễ bảo trì hơn nhiều so với việc phải nhớ các vị trí bằng số.

challenge icon

Thử thách

Dễ

Bạn sẽ nhận một đầu vào: một mảng kết hợp 2D biểu thị kho sản phẩm ở định dạng JSON. Mỗi sản phẩm có một ID sản phẩm duy nhất làm khóa, còn giá trị là một mảng kết hợp chứa "name" và "price" của sản phẩm. Đọc đầu vào, chuyển chuỗi JSON thành mảng kết hợp 2D, duyệt qua tất cả sản phẩm và in thông tin của từng sản phẩm theo định dạng: ID: [product_id] - Name: [name] - Price: $[price]

Mỗi sản phẩm cần được in trên một dòng riêng.

Định dạng đầu vào: Một dòng chứa đối tượng JSON biểu thị kho sản phẩm (ví dụ: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})

Đầu ra mong đợi: Mỗi sản phẩm được in trên một dòng riêng theo định dạng ID: [product_id] - Name: [name] - Price: $[price]

Tự làm thử

<?php
// Đọc đầu vào JSON
$input = fgets(STDIN);

// Chuyển JSON thành mảng kết hợp
$inventory = (array)json_decode($input, true);

// TODO: Viết code bên dưới để duyệt qua inventory và in ra từng sản phẩm


?>
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch PHP online