Menu
Coddy logo textTech

Двумерные ассоциативные массивы

Часть раздела Логика и управление потоком путешествия по PHP на Coddy. Урок 31 из 68.

Хотя вы работали с двумерными массивами, используя числовые индексы, вы также можете создавать более структурированные данные, используя массивы associative как на основном уровне, так и внутри вложенных массивов. В этом подходе вместо чисел используются строковые ключи, что делает ваши data гораздо более описательными и понятными.

Вот как создать двумерный ассоциативный массив, в котором у каждого элемента есть содержательные строковые ключи:

<?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"]
];
?>

Эта структура невероятно эффективна для организации сложных данных, таких как профили пользователей, каталоги продуктов или любые сценарии, в которых необходимо хранить несколько связанных свойств для каждого элемента. Строковые ключи делают ваш код самодокументируемым и значительно упрощают его сопровождение по сравнению с запоминанием числовых позиций.

challenge icon

Задание

Легко

Ты получишь один входной параметр: двумерный associative-массив, представляющий inventory product в формате JSON. Каждый product имеет уникальный ID product в качестве ключа, а значением является associative-массив, содержащий "name" и "price" product. Прочитай входные данные, преобразуй строку JSON в двумерный associative-массив, пройди через все products и выведи информацию о каждом product в формате: ID: [product_id] - Name: [name] - Price: $[price]

Каждый product должен быть выведен в отдельной строке.

Формат входных данных: Одна строка, содержащая объект JSON, представляющий inventory product (example: {"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: Напишите ваш код ниже, чтобы перебрать инвентарь и вывести каждый продукт


?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор PHP