Поскольку вы все равно должны проходить через каждое значение, просто добавьте все значения в массив, а затем используйте метод sort
и возьмите первые десять элементов (0-9). Вот документация о том, как именно использовать этот метод:
http://www.php.net/manual/en/function.sort.php
Преимущество этого решения состоит в том, что оно будет переупорядочивать значения так, чтобы ключ 0 соответствовал наименьшему значению. Также есть возможность изменить тип сравнения (текстовый, числовой и т. Д.)
Вы можете пытаться сортировать каждый раз, когда найдете новое значение (вставьте новое значение и отбросьте самое высокое значение). Это сэкономит вам память для массива, но это будет стоить вам вычислительной мощности при сравнении каждого значения. Даже с оптимизацией это, вероятно, не будет достаточно хорошо.
Если вы действительно не хотите помещать каждый элемент в массив, вы можете создать массив из 50 членов (или любого магического числа, которое вы хотите использовать). Вы могли бы заполнить это с первыми 50 длительностями и затем отсортировать это. Затем вы можете добавить еще 40 элементов в позиции массива 10-49 и снова отсортировать их. Вы можете повторять это снова и снова, сохраняя ваши самые низкие десять пунктов каждый раз, когда вы добавляете новые длительности. Таким образом, вы можете уравновесить снижение производительности при сортировке каждого элемента и потерю памяти при хранении каждого элемента. Вы можете набрать его, изменив размер массива.