Хэлп :) производная от числа в заданном интервале

banshee(oleg)
На сайте с 12.08.2007
Offline
140
836

Всем пря. Тут назрел такой, вроде, не сложный вопрос. но что-то я не вдуплю как прально решается.

Нужна функция

 возвращающая число, образованного от другого, в рамках заданного интервала. Что-то вроде.


function GetPID($id, $maxid, $minid=0) {
//ацкие вычисления
return $pid;
}

допустим,
$maxid = 4;
$id - число от 0 до 10000;
тогда ряд id/pid будет такой
1/1, 2/2, 3/3, 4/4, 5/1, 6/2.. ротация, короче. Камнями не кидать =)
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

А что функция возвращать должна? Эту строчку или что?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
banshee(oleg)
На сайте с 12.08.2007
Offline
140
#2

яж написал ряд $id/$pid

ид на входе - пид на выходе (целые числа)

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#3

Так чтоли?

function GetPID($id, $maxid, $minid=0) {

$i=0;$f=1;$mass=array();

while ($i!=$id)

{

$pid[]=($i+1).'/'.$f;

$i++;$f++;

if ($f>$maxid) {$f=1;}

}

return $pid;

}

banshee(oleg)
На сайте с 12.08.2007
Offline
140
#4

Ну мысль ты понял, только $pid не массив, а целое число, мой ряд - это, в качестве примера 6 вызовов функции, я просто написал последовательность вход/выход, что было понятно чего я жду.

Но цикл мне не подходит, цикл я и сам могу, но это же ужасно! Допустим, если $id шестизначное, а $maxid пара сотен, то это тыщи раз цикл должен исполниться, это меганерационально. Хотя, я уверен, должна быть простейшая математическая функция.

Я просто приведу практический пример. На сайте есть раздел с патнерским контентом, который по понятым причинам вяло ранжируется.

я хочу разбавить партнерский контент вставками со списками тем на форуме и заголовками новостей. Но шоб это был не рандомные блоки и не повторялись, насколько это возможно.

Допустим,

адрес страницы: content.php?id=NNNNNN&param1=&param2.. отсюда

$id = intval($_GET['id']);

$fcount = кол-во тем на форуме;

$ncount = кол-во новостей;

//Тут-то и приходит наша мегафункция на помощь

$fid = GetPID($id, $fcount); //айдишник от которого будут выбраны темы на форуме

$nid = GetPID($id, $ncount); //айдишник от которого будут выбраны новости

.. ну и тд.

Но представь, что тут мы два раза прокрутили предложенный тобой цикл, А? На каждой странице.. некрасиво :(

pastuhoff
На сайте с 29.10.2005
Offline
229
#5

Может нужно это?

$pid=$id%$maxid;

if($pid==0) $pid=$maxid;

Ну и условие на $id=0 наложить, если нужно.

Коллекционер доменных имен.
banshee(oleg)
На сайте с 12.08.2007
Offline
140
#6

походу дела да, а я вот что придумал:

if ($id>$maxid) {
$pid = $maxid - Floor($id/$maxid)*$maxid;
} else {
$pid = $maxid;
}

pastuhoff, а твой вариант это смещение вроде называется, да? всегда хотел по нему хелп найти, да процент-то яшка не ищет :)

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#7

Да ладно вам на меня наезжать))) Я то думал целый ряд нужно вернуть)))

banshee(oleg)
На сайте с 12.08.2007
Offline
140
#8

Аа! Тогда прощаем :)

pastuhoff
На сайте с 29.10.2005
Offline
229
#9

banshee(oleg), это "целочисленное деление" вроде называется. Вернее, остаток от него.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий