Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Генерация чисел от некого числа +/-
 
 автор: web777   (10.02.2016 в 19:35)   письмо автору
 
 

Допустим имеется число ID:150, которому мы указываем число допустим 5, и нужно получить:

Если нужно меньше то получить числа 149,148,147,146,145
Если нужно больше то получить числа 151,152,153,154,155

можно в массив либо через запятую, как правильно сгенерировать?

  Ответить  
 
 автор: Valick   (10.02.2016 в 19:58)   письмо автору
 
   для: web777   (10.02.2016 в 19:35)
 

в чём проблема-то?
показывайте свои попытки реализации алгоритма
если нужен готовый код, то это на коммерческой основе

  Ответить  
 
 автор: web777   (10.02.2016 в 20:21)   письмо автору
 
   для: Valick   (10.02.2016 в 19:58)
 

написал, две функции



<?php
function generate_minus($id,$diff)
{
  
$sum_start = ($id-$diff);
  
$sum_end = ($id+$diff);  
  
$out '';
    
  
$i=$sum_start;
  while (
$i $sum_end) {
     
$out .= $i.',';
     if (
$i === $id) break; 
     
$i++;
  }
  return 
$out;
}


и

<?php
function generate_plus($id,$diff)

  
$sum = ($id+$diff);
  
$i $id;
  
$out '';
 
  while (
$i $sum) {
    
$out .= $i.',';
    if (
$i === $sum) break; 
    
$i++;
  } 
  return 
$out;




<?php
$id 
'100';

echo 
generate_minus($id,'5');   
echo 
generate_plus($id,'5'); 


с функцией generate_plus вроде всё в порядке, от числа формирует на большее как надо. А вот с функцией generate_minus на уменьшение не обрывается на числе $id

  Ответить  
 
 автор: Valick   (10.02.2016 в 20:31)   письмо автору
 
   для: web777   (10.02.2016 в 20:21)
 


<?php
function num_line($num$delta){
    if(
$delta == 0) return false;
    if(
$delta 0){
        for(
$i $num 1$i <= $num $delta$i++) $a[] = $i;
    }else{
        for(
$i $num 1$i >= $num $delta$i--) $a[] = $i;
    }
    return 
$a;
}
$a num_line(150, -5);
print_r($a);
?>

крайне не нравиться ваш $id уж не совершаете ли вы огромнейшую ошибку в своей жизни и не хотите таким образом вычислить идентификаторы строки для последующего использования в БД?

  Ответить  
 
 автор: web777   (10.02.2016 в 20:48)   письмо автору
 
   для: Valick   (10.02.2016 в 20:31)
 

ух ты)) как быстро)) Огромное Вам спасибо!

Да, именно под базу данных, для новостей, рядом с текущей новостью, будут отображаться несколько те, что рядом. А почему таким образом совершается ошибка?

  Ответить  
 
 автор: Valick   (10.02.2016 в 21:16)   письмо автору
 
   для: web777   (10.02.2016 в 20:48)
 

> рядом с текущей новостью, будут отображаться несколько те, что рядом
учитесь работать с БД, раз уж её используете
> А почему таким образом совершается ошибка?
просто поверьте, не хотите верить читайте книги ;)

  Ответить  
 
 автор: elenaki   (11.02.2016 в 10:49)   письмо автору
 
   для: web777   (10.02.2016 в 20:48)
 

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

  Ответить  
 
 автор: Valick   (11.02.2016 в 11:30)   письмо автору
 
   для: elenaki   (11.02.2016 в 10:49)
 

ну в принципе верно, но я о другом, если есть id=149 и есть id=151, то это абсолютно не значит, что есть id с номером 150
ну и в конце концов получить 5 последующих или 5 -10-1000 пердыдущих записей от основной абсолютно не составляет труда, какими бы ни были там id

  Ответить  
 
 автор: confirm   (11.02.2016 в 01:18)   письмо автору
 
   для: web777   (10.02.2016 в 19:35)
 

<?
function numrange($a$b) {
    
$a range($a$a $b);
    if(
$b 0array_reverse($a);
    return 
implode(','$a);
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования