Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отсортеровать массив по ключу с заданной точки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
CTAPu4OK
Отправлено: 03 Марта, 2012 - 01:49:48
Post Id



Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




Подобное набросал, но к сожалению работает криво ((( мало того сортирует не в том направлении который мне нужен, так еще иногда путает местами (

PHP:
скопировать код в буфер обмена
  1.  
  2. // Берем значение (позицию в массиве) с какого ключа начинать отсчет
  3.                 $cf = $config->row_array();
  4.                 // Берем массив с данными (текст)
  5.                 $res = $query->result_array();
  6.                 // берем общее колличество массива с данными (текст)
  7.                 $count = $query->num_rows()-1;
  8.                
  9.                 // Если позиция ключа больше общего колличества массива или меньше или равно нулю то
  10.                 if($cf['Order'] > $count || $cf['Order'] <= 0)
  11.                 {
  12.                     // Позицию в массиве делаем равным общему колличеству например 0 = 5
  13.                     $cf['Order'] = $count;
  14.                     // обновляем данные в базе
  15.                     $this->db->update('config', array('Order' => $cf['Order']));
  16.                 }
  17.                 else
  18.                 {
  19.                     // если позиция ключа в не выходит за пределы, то просто отнимаем от нее один
  20.                     $this->db->update('config', array('Order' => $cf['Order']-1));
  21.                 }
  22.                 // создаем пустой массив
  23.                 $new = array();
  24.                 // $i равно позинции в массиве
  25.                 $i = $cf['Order']; // 5
  26.                
  27.                 while(1)
  28.                 {
  29.                     // если i меньше 0 то приравниваем к общему колличеству
  30.                     if($i < 0) $i = $count;
  31.                     // заносим данные в новый массив
  32.                     $new[] = $res[$i];
  33.                     // если i равна нулю, то приравниваем к общему колличеству
  34.                     if($i == 0) $i = $count;
  35.                     // если не равно нулю, отнимаем единичку
  36.                     else $i--; //4
  37.                     // если i равно позиции в массиве, то завершаем цикл
  38.                     if($i == $cf['Order']) break;
  39.                 }
  40.  


Это своего рода очередь, т.е. отображение сообщений

имеем массив с 4 записями
1 => Текст1
2 => Текст2
3 => Текст3
4 => Текст4

требуется сделать следующее, чтоб при каждом запросе он выдавал сортировку начиная с заданного ключа
т.е. если значение из базы равно 3 то сортировать должен с 3, получится следующее:

1
2
3
4

4
1
2
3

3
4
1
2

2
3
4
1

1
2
3
4
тоесть нижнее значение перемещается наверх, сдвигая все остальные вниз))

в моем примере работает с точностью да на оборот... у мну верхние значения замещают нижние, и то криво, иногда путаются))) т.е.

1
2
3
4

2
3
4
1

3
4
1
2

4
1
2
3

1
2
3
4
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB