Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка массива, Массивы 
:(
    Опции темы
Ostalex
Дата 10.9.2010, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



Всем привет! Есть вопрос. Скажите, пожалуйста, как отсортировать массив в цикле. Например, есть массив: array(0,1,2,3). При каждой иттерации цикла for($i=0; $i<=3; $i++) нужно сортировать массив, первый элемент которого будет переменная из цикла $i, другие элементы должны быть в том порядке, в котором они были до сортировки. Наведу пример:
После 1-й иттерации массив будет выглядеть так:
array(0,1,2,3), т.е. без изменений.
После 2-й иттерации массив уже будет выглядеть так:
array(1,2,3,0), т.е. первым элементом будет $i, а последним то, что было первым.
После 3-й иттерации массив примет вид:
array(2,3,0,1), и т.д. Элементы массива какбы смещаются.
Курил мануалы, но стандартной функции не нашел. Может плохо "втягивался"? ;)
PM MAIL   Вверх
Muerto
Дата 10.9.2010, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Ostalex, Конечный результат какой должен быть?
из 7,5,3,2,6
нужно 7,6,5,3,2 ? для это есть функция sort



Или же если я правильно понял

Код

$x=$thisarray[count($thisarray)];
array_shift($thisarray);
$thisarray[]=$x;


Не пойму зачем первый раз без изменений... но если изменения не нужны, то можно тупо через if пропустить...
а проще твой цикл начать с 1 а не с 0

Это сообщение отредактировал(а) Muerto - 10.9.2010, 17:41


--------------------
user posted image
PM MAIL   Вверх
Ostalex
Дата 10.9.2010, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



Цитата(Muerto @ 10.9.2010,  17:38)
Ostalex, Конечный результат какой должен быть?
из 7,5,3,2,6
нужно 7,6,5,3,2 ? для это есть функция sort



Или же если я правильно понял

Код

$x=$thisarray[count($thisarray)];
array_shift($thisarray);
$thisarray[]=$x;


Не пойму зачем первый раз без изменений... но если изменения не нужны, то можно тупо через if пропустить...
а проще твой цикл начать с 1 а не с 0

верно, вы не правильно поняли)
уже есть отсортированый массив с самого начала, нужно просто "смещать" его элементы
PM MAIL   Вверх
bars80080
Дата 10.9.2010, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



если нужен только конечный результат, то достаточно просто вырезать из массива нужное количество элементов, а затем склеить.
это функции array_splice и array_merge

если нужно на каждой итерации перемещать элементы (это, кстати, называется регистр), то array_shift и array_push полность решат проблему. первой функцией мы извлекаем первый элемент массива, второй кладём его в конец массива
PM MAIL WWW   Вверх
Muerto
Дата 10.9.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Цитата(Ostalex @ 10.9.2010,  19:35)
Цитата(Muerto @ 10.9.2010,  17:38)
Ostalex, Конечный результат какой должен быть?
из 7,5,3,2,6
нужно 7,6,5,3,2 ? для это есть функция sort



Или же если я правильно понял

Код

$x=$thisarray[count($thisarray)];
array_shift($thisarray);
$thisarray[]=$x;


Не пойму зачем первый раз без изменений... но если изменения не нужны, то можно тупо через if пропустить...
а проще твой цикл начать с 1 а не с 0

верно, вы не правильно поняли)
уже есть отсортированый массив с самого начала, нужно просто "смещать" его элементы

То что я вам дал именно делает то что вам нужно...

Хотя оратор после меня верно подметил насчет array_push


--------------------
user posted image
PM MAIL   Вверх
Ostalex
Дата 11.9.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 7.9.2010

Репутация: нет
Всего: нет



Цитата(bars80080 @ 10.9.2010,  19:45)
если нужен только конечный результат, то достаточно просто вырезать из массива нужное количество элементов, а затем склеить.
это функции array_splice и array_merge

если нужно на каждой итерации перемещать элементы (это, кстати, называется регистр), то array_shift и array_push полность решат проблему. первой функцией мы извлекаем первый элемент массива, второй кладём его в конец массива

Да, спасибо, использовал шифт и пуш. для меня эти функции в диковинку, т.к. не приходилось еще с ними работать,  поэтому такие вопросы
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0688 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.