Вот простой пример (работает с целочисленными ключами):
$data = // ваш массив;
$arrays = []; // массив с результирующими массивами
$prevDelimiterIndex = 0;
foreach ($data as $index => $item) {
if (!empty($item)) {
continue;
}
// взять срез между предыдущим разделителем и следующим
array_push($arrays, array_slice($data, $prevDelimiterIndex, $index));
$prevDelimiterIndex = $index + 1;
}
Массив $arrays будет содержать список массивов.
Если кратко, идея следующая: найти индексы элементов-разделителей и по ним получить срезы элементов между этими индексами.