Двумерные ассоциативные массивы
Часть раздела Логика и управление потоком путешествия по 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"]
];
?>Эта структура невероятно эффективна для организации сложных данных, таких как профили пользователей, каталоги товаров или любые сценарии, где необходимо хранить несколько связанных свойств для каждого элемента. Строковые ключи делают ваш код самодокументируемым и значительно упрощают его поддержку по сравнению с запоминанием числовых позиций.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоВы получите один входной параметр: двумерный ассоциативный массив, представляющий инвентарь товаров в формате 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: Напишите ниже код для итерации по инвентарю и вывода каждого продукта
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутые функции
Анонимные функцииЗамыкания и 'use'Стрелочные функцииCallback-функцииИспользование 'call_user_func'Функции переменныхПередача по ссылкеРекурсивные функцииИтоги: ассорти из функций4Многомерные массивы
Создание 2D-массиваДоступ к элементам 2D-массиваИзменение элементов 2D-массиваИтерация с вложенными цикламиДвумерные ассоциативные массивыИтоги: Упражнение «Простая сетка»2Продвинутая работа с массивами
Добавление с помощью 'array_push'Удаление с помощью 'array_pop'Добавление с помощью 'array_unshift'Удаление с помощью 'array_shift'Слияние индексных массивовСлияние ассоциативных массивовИзвлечение с помощью 'array_slice'Поиск значений с 'in_array'Поиск ключей с 'array_search'Итоги: Упражнение «Плейлист»3Сортировка массивов
Сортировка индексных массивов по возрастаниюСортировка индексных массивов по убываниюСортировка ассоциативных массивов по значениюСортировка ассоциативных массивов по ключуСортировка в естественном порядкеПользовательская сортировка с помощью 'usort'Итоги: Сортировка таблицы лидеров