• Теория
  • Теория

Фильтруем товары

Мы научились добавлять товары из массива на страницу. Теперь мы готовы приступить к фильтрации. Разработчики уже добавили фильтры в сценарий catalog.php и в шаблон components/products_list.php.

Наша задача — дополнить цикл, который отображает карточки на странице, так, чтобы на страницу добавлялись не все товары из массива, а только товары выбранной категории. Например, пользователь выбирает фильтр «Мебель» и на странице появляются товары только такого типа.

Как это реализовать? Для начала надо выяснить, какой фильтр сейчас выбран. У каждого фильтра есть свой адрес с параметром запроса product_type:

catalog.php?product_type=furniture

Чтобы определить, какой фильтр выбрал пользователь, достаточно получить значение параметра запроса с помощью уже знакомой нам команды $_GET.

Старшие разработчики уже создали переменную $type со значением $_GET['product_type'] в сценарии.

Хорошо, мы знаем активный фильтр. Как теперь найти товары подходящей категории в массиве? Разработчики позаботились и об этом.

У каждого товара в массиве $items есть ключ 'type'. Это и есть категория товара.

[
  'title' => 'Подвесная кровать Асусмер',
  'type' => 'furniture',
  'colors' => ['blue']
]

Нам достаточно внутри нашего цикла foreach сравнить активный фильтр из $type со значением 'type' каждого товара в массиве. Если они совпадают, проверка пройдёт и товар появится на странице.

Для сравнения будем использовать условие. В круглых скобках запишем:

$item['type'] === $type

Будем использовать оператор сравнения ===. Он называется строгое равенство и проверяет, равны ли значения слева и справа. Если равны, то условие истинно.

Давайте попробуем всё это на практике.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Массивы и циклы в PHP» тренажёра «Знакомство с PHP» можно после регистрации и оформления подписки.