Menu
Coddy logo textTech

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

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

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

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

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

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

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

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

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

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

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

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

challenge icon

Задание

Легко

Вы получите один входной параметр: двумерный ассоциативный массив, представляющий инвентарь товаров в формате JSON. Каждый товар имеет уникальный идентификатор продукта в качестве ключа, а значением является ассоциативный массив, содержащий "name" и "price" товара. Прочитайте входные данные, преобразуйте строку JSON в двумерный ассоциативный массив, переберите все товары и выведите информацию о каждом товаре в формате: 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]

Шпаргалка

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

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

Строковые ключи делают ваши данные самодокументируемыми и более простыми в обслуживании, чем числовые позиции.

Попробуйте сами

<?php
// Чтение входных данных JSON
$input = fgets(STDIN);

// Преобразование JSON в ассоциативный массив
$inventory = (array)json_decode($input, true);

// TODO: Напишите ниже код для итерации по инвентарю и вывода каждого продукта


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

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

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