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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка масива, Нужно отсортировать масив 
:(
    Опции темы
Гость_Вася
Дата 7.10.2003, 10:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите мне отсортировать массив не стандартными функцыми, типа
Код
<?
 $a=1;
 $max1=array (); // id
 $max2=array (); // Количество нажатий
 $max3=array (); // href
 $max4=array (); // Имя реферата

 $fh = fopen('base.dat', "r");
 while (! feof($fh)) :
 $line = fgets($fh, 4096);
 list($grupa, $id, $press, $link, $name) = explode("::", $line);
 $max1[$a]=$id;
 $max2[$a]=$press;
 $max3[$a]=$link;
 $max4[$a]=$name;
 print"$max2[$a]<br>";
 $a++;

 endwhile;
 print "<br><br>$a<br><br>";
 // Sortirovka

 for ($i=2; $i<=$a-1; $i++):


  for ($j=$a; $i<=$j; $j==$j-1):


    if (($max2[$j-1])<($max2[$j])){
    $buf=$max2[$j-1];      //Менякм местами нажатия
    $max2[$j-1]=$max2[$j];
    $max2[$j]=$buf;

   }
  endfor;
 endfor;
 for ($z=1; $z<=$a-1; $z++):
 print"<b>$max1[$z] - $max2[$z]<br></b>";
 endfor;
 fclose($fh);
?>

Тут ошибка, немного глючит, подскажите свой вариант сортировки! Нужно тут отсортировать числовой масив $max2 exclamation.gif
Всем спасибо!
  Вверх
Master
Дата 7.10.2003, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

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



Это надо сначала объяснить на пальцах... что собственно надо и как отсортировать...


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Гость_Вася
Дата 9.10.2003, 10:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть массив а состоящий из чисел 1, 9, 5, 2, 4, 3, 7, 6, 0 и мне его надо отсортировать по возрастанию не стандартными функциами, а самому написать как в примере выше!
  Вверх
Гость_Вася
Дата 9.10.2003, 10:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Чтото в роде такой сортировки надо
Код

for ($i=2; $i<=$a-1; $i++):


 for ($j=$a; $i<=$j; $j==$j-1):


   if (($max2[$j-1])<($max2[$j])){
   $buf=$max2[$j-1];      //Менякм местами нажатия
   $max2[$j-1]=$max2[$j];
   $max2[$j]=$buf;

  }
 endfor;
endfor;

  Вверх
Master
Дата 9.10.2003, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

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



А зачем? Если есть уже готовые... функции написанные на пхп работают медленне встроенных функций


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Secandr
Дата 9.10.2003, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Гость_Вася>> А если попробывать завести массив массивов?

$max=array($id,$press,$link,$name);

или даже так:

$max[$id]=array($press,$link,$name);


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
MuToGeN
Дата 9.10.2003, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

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



А не проще ли БД для этого пользовать?
SQL
SELECT * FROM someTable ORDER BY someField;



--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Secandr
Дата 9.10.2003, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Вот из манулов пример:
Код
function cmp ($a, $b) {  
   if ($a == $b) return 0;
   return ($a < $b) ? -1 : 1;
}

usort ($a, "cmp");
А вот так его переделать:
Код
$max[]=array($id,$press,$link,$name);
/***Заполняем массив
***/
function cmp ($a, $b) {  
   if ($a[1] == $b[1]) return 0;
   return ($a[1] < $b[1]) ? -1 : 1;
}

usort ($max, "cmp");

Это сортировка по $press

Это сообщение отредактировал(а) Secandr - 9.10.2003, 15:13


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Гость_ВАся
Дата 10.10.2003, 03:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне именно надо собственную, всем спасибо!
  Вверх
Вася2
Дата 10.10.2003, 19:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть текстовой файл baza.txt, в нем записанны данные:
Код

547|Книги
13|Тетрадий
345|Ручек
765|Карандашей
1|Дневник
9876|Листов

Первое число количество, второе - название. Читаем файл в массив. Надо отсортировать массив по возрастанию так чтобы при сортировки по количеству названия сразу тоже перемещались и получилось в конце:
Код

9876шт. - Листов
765шт. - Карандашей
547шт. - Книги
345шт. - Ручек
13шт. - Тетрадей
1шт. - Дневник

  Вверх
Vaulter
Дата 11.10.2003, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



asort($array)


--------------------
PM MAIL WWW ICQ   Вверх
MuToGeN
Дата 15.10.2003, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

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



2Вася2:
Модератор: пожалуйста, не дублируйте постинги.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Вася2
Дата 15.10.2003, 09:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











в смымсли
Цитата
пожалуйста, не дублируйте постинги.

  Вверх
MuToGeN
Дата 15.10.2003, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

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



> в смымсли
Постинг <<Есть текстовой файл baza.txt...>> появился второй раз с разницей по времени в несколько дней.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Вася2
Дата 15.10.2003, 17:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Почему, мне надо отсортировать а потом не записывать в массив!
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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