Форма массива — часть контракта
Список имеет последовательные числовые ключи и обычно кодируется в JSON как массив. Карта связывает ключ со значением и кодируется как объект. После filter у списка могут остаться разрывы ключей; если внешний контракт требует JSON-массив, выполните array_values осознанно.
Ключ id ускоряет поиск записи в памяти, но превращает коллекцию в карту. Не используйте отображаемое имя упражнения как ключ: имена меняются и могут повторяться. Стабильный идентификатор — отдельное поле.
Выбор структуры
Объединение имеет семантику
Оператор + сохраняет значения левого массива для существующих ключей. array_merge перенумеровывает числовые ключи и заменяет строковые более поздними. Spread делает запись компактнее, но не отменяет правил ключей. Перед объединением назовите, что означает конфликт.
Для конфигурации полезна стратегия defaults затем override с allowlist разрешённых ключей. Слепое слияние пользовательского массива с настройками способно включить внутренний флаг, который форма вообще не должна контролировать.
Индексирование тренировок
<?php
declare(strict_types=1);
$workouts = [
['id' => 41, 'minutes' => 35],
['id' => 44, 'minutes' => 50],
];
$byId = [];
foreach ($workouts as $workout) {
$byId[$workout['id']] = $workout;
}
echo $byId[44]['minutes'];Стоимость скрывается в удобстве
Повторный array_filter внутри цикла создаёт квадратичную работу на больших наборах. Один раз постройте индекс, если затем выполняется много поисков. Не оптимизируйте без измерения, но умейте назвать число проходов и объём промежуточных копий.
Большой массив целиком в памяти не всегда нужен. Если записи поступают из файла или базы, генератор может отдавать их по одной. Следующая глава разделит коллекцию как готовое значение и iterable как поток.
Лабораторная работа
Получите список подходов и постройте карту по id, множество уникальных exercise_id и группы по дате. Для каждой структуры запишите допустимость повторов и значение порядка.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- php.nethttps://www.php.net/releases/8.5/en.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .