1. Это понятно, поэтому и возник вопрос.
2. Массив используется, т.к. я не хочу чтобы приложение делало лишние запросы к бд.
3. Приведен кусок старого кода, который работал до переключения в массив.
4 Я использую чуть более сложный вывод даты, стандартных ф-ций не хватает.
Если использовать этот вариант, то я каждой категории я бы добавил св-во фильтра - sql выражение WHERE... Затем наследовал родительское и прибавлял оператором AND дочернее. В итоге получал sql запрос выполнив который можно привязать полученные товары. Какие подводные камни ?)