Как отсортировать массив для вывода 4 элементов в ряд, при условии, что есть элементы, занимающие 2 слота?
Есть массив с N количеством элементов. Через foreach выводится таблица элементов, 4 слота в строке, некоторые элементы занимают 2 слота, некоторые 1. Сейчас массив не сортируется и получается, что есть пробелы в строках, например, когда идет элемент с 1 слотом, за ним 2 слота, и еще один 2 слота. Последний не вмещается и переносится на следующую строку. Как отсортировать массив, чтобы максимально места было занято? Чтобы было только 2 2, 1 1 2, 1 2 1, 2 1 1 в строке, а пустые, если и были, то только в самом конце
циклом обходим массив:
если элемент влезает, то добавляем его и удаляем из массива
если элемент не влезает, то переносим элемент в конец массива и дополнительно сохраняем его значение/ключ в переменной
ну и обходим массив вложенным циклом пока не найдем подходящий элемент или не сделаем круг и не достигнем элемента который сохранен в переменной.