Перейти к содержимому
Задача · Ошибки и исключения · урок 8 из 8

Задача: нет на складе

Склад хранится в массиве: ключ — название товара, значение — сколько штук осталось, например ['tea' => 3, 'milk' => 2]. Напишите функцию function take(array $stock, string $name, int $qty): array, которая списывает $qty штук товара $name и возвращает склад после списания.

Если товара не хватает, функция бросает OutOfStockException с сообщением вида tea: need 5, have 3 — название товара, сколько штук просили и сколько есть. Товар, которого нет в массиве, считается товаром с остатком 0. Класс OutOfStockException уже объявлен в заготовке.

  • take(['tea' => 3, 'milk' => 2], 'tea', 2) → ['tea' => 1, 'milk' => 2]
  • take(['tea' => 3], 'tea', 5) → бросает OutOfStockException с сообщением tea: need 5, have 3
  • take(['tea' => 3], 'coffee', 1) → бросает OutOfStockException с сообщением coffee: need 1, have 0

Ограничения: $qty — целое число от 1 до 1000; товар с остатком 0 остаётся в массиве; остальные товары и их порядок не меняются.

Не добавляйте лишних require и use, если в задаче это прямо не сказано.

stock.php — php
php · строк: 9
Ctrl+Enter запуск · Esc выйти из редактора