Копался в одной системе и немного ошалел от количества кода, которое там занимается подсчётом количества страниц(что-то вроде пагинации). Тонны переменных, проверок.
Подумал, что же тут такого сложного и написал свою реализацию:
- <?php
- /**
- * Описание алгоритма:
- * Алгоритм печатает количество страниц, основываясь на трех константах:
- * 1. Количество элементов(всего)
- * 2. Желаемое количество элементов на страницу
- * 3. Максимальное количество дополнений(ситуация, когда на последней странице 1-2 элемента)
- */
- define('RESULTS_COUNT', 12349);
- define('RESULTS_PER_PAGE', 17);
- define('MAX_ADDITIONS', 7);
-
- $results_per_page = RESULTS_PER_PAGE>0?RESULTS_PER_PAGE:1; // дополнительная проверка на division by zero
-
- if(RESULTS_COUNT<$results_per_page || RESULTS_COUNT==$results_per_page){
- exit('1 page for '.RESULTS_COUNT.' results.');
- }
-
- $exact_pages_count = RESULTS_COUNT / $results_per_page;
- if (is_int($exact_pages_count)) {
- exit($exact_pages_count.' pages for '.RESULTS_COUNT.' results.');
- }
- else {
- $rough_estimate_pages = intval($exact_pages_count);
- $number_of_surplus=RESULTS_COUNT-($results_per_page*$rough_estimate_pages);
- $pages_of_surplus=$number_of_surplus<=MAX_ADDITIONS?$rough_estimate_pages:$rough_estimate_pages++;
- exit($rough_estimate_pages.' pages for '.RESULTS_COUNT.' results.');
- }
- ?>
* This source code was highlighted with Source Code Highlighter.
Возможно, у вас есть лучшее решение, решающее такую же задачу? Если да, то было бы интересно взглянуть.