Как улучшить производительность вложенных циклов в PHP/JavaScript?

Привет всем! У меня есть проблема с оптимизацией кода. Вот в чем дело:

У меня есть два массива: $сезоны (около 20 элементов) и $серии (около 1000 элементов). Мне нужно поместить каждую серию в контейнер соответствующего сезона.

Сейчас я использую вложенные циклы foreach, но это очень неэффективно. Получается, что код выполняет 20 000 итераций!

Вот пример моего текущего кода:

foreach ($сезоны as $сезон) {
  echo '<div class="контейнер_сезона">';
  foreach ($серии as $серия) {
    if ($серия['номер_сезона'] == $сезон['номер']) {
      echo '<div class="серия">' . $серия['название'] . '</div>';
    }
  }
  echo '</div>';
}

Я думал о том, чтобы вынести цикл по сериям наружу и потом организовать их с помощью JavaScript, но не знаю, как это сделать правильно.

Может кто-нибудь подсказать, как оптимизировать этот код? Буду очень благодарен за помощь!

Могу предложить еще один вариант оптимизации - использовать array_filter для группировки серий. Примерно так:

foreach ($сезоны as $сезон) {
  $серии_сезона = array_filter($серии, function($серия) use ($сезон) {
    return $серия['номер_сезона'] == $сезон['номер'];
  });
  
  echo '<div class=\"контейнер_сезона\">';
  foreach ($серии_сезона as $серия) {
    echo '<div class=\"серия\">' . $серия['название'] . '</div>';
  }
  echo '</div>';
}

Это позволит избежать лишних проверок и сделать код более читаемым. А еще можно подумать о кешировании результатов, если данные меняются нечасто.

А что если сначала отсортировать массив серий по номеру сезона? Тогда можно будет проходить по нему один раз, группируя серии на лету:

sort($серии);
$текущий_сезон = null;
foreach ($серии as $серия) {
  if ($серия['номер_сезона'] != $текущий_сезон) {
    if ($текущий_сезон !== null) echo '</div>';
    echo '<div class="контейнер_сезона">';
    $текущий_сезон = $серия['номер_сезона'];
  }
  echo '<div class="серия">' . $серия['название'] . '</div>';
}
echo '</div>';

Так избежим лишних проверок и сэкономим память. Как думаешь, подойдет?