Ошибка -- Отсутствует ключ в массиве -- Key "1" for array with keys "2, 3, 4" does not exist.

Ошибка

Key "1" for array with keys "2, 3, 4" does not exist.

Также при отладке наблюдается перезапись значений массива с каждой итерацией.

Может возникать, если вы объявляете массив, в котором храните полученные данные, внутри цикла, в котором их получаете.

foreach ($childCategories as $childCategory) {
    $productsInCategory = [];
    // ...
    // И здесь же хотим присвоить значение массиву данных
    $productsInCategory[$childCategory->getSlug()] = $value;
}

Решение

Вынесите объявление массива из цикла наружу:

// сначала объявляем массив
$productsInCategory = [];

foreach ($childCategories as $childCategory) {
    // ...
    // потом добаляем данные
    $productsInCategory[$childCategory->getSlug()] = $value;
}
vedro-compota's picture

хм, но это не просто перезапись а в явном виде же затираете сам массив, пустым значением:

foreach ($childCategories as $childCategory) {
    $productsInCategory = [];

_____________
матфак вгу и остальная классика =)

melisa's picture

хм, но это не просто перезапись а в явном виде же затираете сам массив, пустым значением

- это стало понятно после того, как ошибка была найдена