циклом обходим массив:
если элемент влезает, то добавляем его и удаляем из массива
если элемент не влезает, то переносим элемент в конец массива и дополнительно сохраняем его значение/ключ в переменной
ну и обходим массив вложенным циклом пока не найдем подходящий элемент или не сделаем круг и не достигнем элемента который сохранен в переменной.
привлекает? да. особенно если эти задачи востребованы в бизнесе. приведу простой пример, я готов предложить 1500 за код который бы решал "задачу рюкзака" для получения оптимального размера/объема посылки.
сомнительная идея - что ты сможешь подчерпнуть от такий же новичков как ты?
лучше присоединяйся к какому-нибудь раскрученному фреймворку вроде yii, с большим русским комьюнити.
header() — Отправка HTTP заголовка.
Вообще для начала лучше ознакомится с MVC и прочими шаблонами проектирования и освоить какой-нибудь фреймворк, рекомендую https://phpixie.com/ - он маленький и простой.