• Теория
  • Теория

Функция ceil

Мы разделили общее число товаров в каталоге на количество товаров на одной странице и использовали результат, чтобы создать ссылки на страницы каталога. Ссылок получилось три, но на трёх страницах все товары не помещаются. Есть ещё четвёртая страница, но ссылка на неё не создалась.

Почему так произошло? Давайте посчитаем. Всего в каталоге 21 товар. На одной странице показывается шесть товаров. Если разделить 21 на 6, получим 3.5. Именно это число и попадает в переменную $pages.

В условии цикла мы указали $i <= $pages. Переменная-счётчик $i увеличивается на 1 на каждой итерации. Цикл выполняет три итерации, а на четвёртой значение счётчика оказывается 4. Это больше 3.5, поэтому код в теле цикла не выполняется, и четвёртая ссылка не создаётся.

// Условие цикла: $i <= $pages;

// Первая итерация: $i = 1;
1 <= 3.5; // true

// Вторая итерация: $i = 2;
2 <= 3.5; // true

// Третья итерация: $i = 3;
3 <= 3.5; // true

// Чертвёртая итерация: $i = 4;
4 <= 3.5; // false

Следует учесть, что число в $pages может быть дробным. Создавать ссылку нужно даже в том случае, если последняя страница заполнена не полностью. Для этого округлим число страниц вверх. Для такого округления в PHP есть встроенная функция ceil. Она принимает число и, если оно дробное, округляет его вверх до ближайшего целого:

keks_log(ceil(3.5));     // Выведет: "4"
keks_log(ceil(3.99999)); // Выведет: "4"
keks_log(ceil(3.00001)); // Выведет: "4"

Используем функцию ceil, чтобы получить правильное число страниц. Подставим это число в цикл в шаблоне и создадим ссылки на все страницы с товарами.

В PHP также есть две другие функции для округления: floor и round. Первая округляет вниз, а вторая — в обе стороны, до ближайшего целого.

keks_log(floor(3.9)); // Выведет: "3"
keks_log(round(3.4)); // Выведет: "3"
keks_log(round(3.6)); // Выведет: "4"
Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Числа и строки в PHP» тренажёра «Знакомство с PHP» можно после регистрации и оформления подписки.