Intereting Posts

Формула PHP для серии чисел (проблема Mathy)

Приносим извинения, если это неправильный сайт для этой проблемы, так как это связано скорее с математикой, чем с программированием.

Я пытаюсь написать серию из 7 ссылок на страницы в стиле Google. По существу, это будет 7 чисел, s ( s + 6), где s – мое начальное значение. У меня возникли проблемы с вычислением начального значения, учитывая ограниченный объем информации.

Заранее, я знаю максимальное значение в серии, это переменная, но она всегда больше 7. В моих попытках написания формул я вызывал это значение g , поэтому g > 7.

Я также знаю номер страницы, которую выбрал пользователь. Я назвал это значение p

Так, например, если g было 8, мне нужно было бы генерировать эти ряды чисел, где полужирное число равно p :

1 2 3 4 5 6 7

1 2 3 4 5 6 7

1 2 3 4 5 6 7

1 2 3 4 5 6 7

2 3 4 5 6 7 8

2 3 4 5 6 7 8

2 3 4 5 6 7 8

2 3 4 5 6 7 8

Пока я могу определить начальное значение, используя имеющуюся информацию, все остальное встает на свои места. Может ли кто-нибудь посоветовать, как я буду рассчитывать свою начальную ценность, используя имеющуюся информацию? Если это актуально, я буду писать эту формулу в PHP.

Спасибо заранее за любые данные.

Это всего лишь код для тестирования.

<? $g=16; for($p=1;$p<17;$p++){ $start = $g-$p > 3 ? ($p-4<1?1:($p-4)) : $g-6; echo "$p :: "; for($i=$start;$i<$start+7;$i++){ echo $i . " "; } echo "<br>"; } ?> 

Итак, ваша стартовая страница определяется (то, что вам действительно нужно):

 $start = $g-$p > 3 ? ($p-4<1?1:($p-4)) : $g-6; 

Выход (Моделирование для g = 16 и p от 1 до 16) ::

p :: номера страниц

 1 :: 1 2 3 4 5 6 7 2 :: 1 2 3 4 5 6 7 3 :: 1 2 3 4 5 6 7 4 :: 1 2 3 4 5 6 7 5 :: 1 2 3 4 5 6 7 6 :: 2 3 4 5 6 7 8 7 :: 3 4 5 6 7 8 9 8 :: 4 5 6 7 8 9 10 9 :: 5 6 7 8 9 10 11 10 :: 6 7 8 9 10 11 12 11 :: 7 8 9 10 11 12 13 12 :: 8 9 10 11 12 13 14 13 :: 10 11 12 13 14 15 16 14 :: 10 11 12 13 14 15 16 15 :: 10 11 12 13 14 15 16 16 :: 10 11 12 13 14 15 16 

И моделирование для g = 8, p от 1 до 8

 1 :: 1 2 3 4 5 6 7 2 :: 1 2 3 4 5 6 7 3 :: 1 2 3 4 5 6 7 4 :: 1 2 3 4 5 6 7 5 :: 2 3 4 5 6 7 8 6 :: 2 3 4 5 6 7 8 7 :: 2 3 4 5 6 7 8 8 :: 2 3 4 5 6 7 8 

Также проверьте Zend_Paginator , строит именно то, что вам нужно.

Это рецензируется как разбиение на страницы и может быть выполнено путем выполнения следующих действий:

  • Во-первых, вам понадобится набор результатов, как правило, из базы данных или где бы то ни было.
  • После применения любых фильтров к результирующему набору у вас должен быть другой набор результатов
  • Вам потребуется количество отфильтрованных результатов
  • Вам понадобится переменная, для которой задано ограничение «на страницу»,
  • переменная, содержащая текущую страницу
  • varayable, в котором указано, сколько ссылок должно быть расположено на одной стороне активной ссылки

Вот код, который я написал для разбивки на страницы в одном из моих проектов, это в виде класса, хотя я не уверен в вашем уровне мастерства, но предоставит вам помощь в Math:

Хотя мой класс может казаться сложным, поскольку он используется для разбивки на страницы, например

<<< 1 2 3 … 10 11 12 … 19 20 21 >>>

используя прилагательные, а что нет.

также выпишите следующие ссылки:

  • Решение для расчета php для разбивки на страницы

Работайте назад. Вы знаете конечный номер, поэтому вместо выполнения s++ сделайте g-- в цикле для вывода чисел. В этом процессе вы можете проверить, есть ли g == p и если да, добавьте свой стиль к нему.

В зависимости от вашего конкретного кода вам, возможно, придется сделать два цикла, один для получения массива чисел, а один для вывода их в правильном порядке, но это довольно тривиально. Если вам действительно нужно / нужно придерживаться одного цикла, вы можете найти s с некоторой простой математикой: s = g - 6 , тогда вы можете работать оттуда в цикле, который увеличивает s ( s++ ).