Forum Webscript.Ru

Программирование => PHP => Тема начата: xax от 10 Февраля 2004, 00:27:05

Название: usort
Отправлено: xax от 10 Февраля 2004, 00:27:05
Есть код:
// Эта функция должна сравнивать значения $f1 и $f2 и возвращать:
// -1, если $f1<$f2,
//  0, если $f1==$f2
//  1, если $f1>$f2
// Под < и > понимаем следование этих имен в выводимом списке
function FCmp($f1,$f2)
{ // Каталог всегда предшествует файлу
  if(is_dir($f1) && !is_dir($f2)) return -1;
  // Файл всегда идет после каталога
  if(!is_dir($f1) && is_dir($f2)) return 1;
  // Иначе сравниваем лексиграфически
  if($f1<$f2) return -1; elseif($f1>$f2) return 1; else return 0;
}
// Пусть $Files содержит массив с ключами - именами файлов
// в текущем каталоге. Отсортируем его.
uksort($Files,"FCmp");  //передаем функцию сортировки "по ссылке"
Впрос мой таков, я не как не могу догадаться, как сделать так, чтобы вместо операторов $f1 и $f2, был одн оператор - из массива (Второй столбик) - у меня он называется $str_arr[1] (Вроде он так всегда называется), который выводит столбик из массива.
На всякий случай, мне нужно отсортировать этот столбик по алфавиту.
Название: usort
Отправлено: xax от 10 Февраля 2004, 16:25:24
Ээх, да же не помогут
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 16:40:54
а чего тогда пишешь? :-)
Название: usort
Отправлено: xax от 10 Февраля 2004, 16:46:40
Ну, хех, мне просто очень надо, я можно сказать мучаюсь с этим две недели, купил две книги, н никак я не могу придумать, как мне отсортировать этот массив, я  так пробовал и сяк, максимально мне удавалось добиться сртировки первого слова по алфавиту из массива!
Вобщем Ром если можешь помоги, или хоть линк  подскажи, где ещё, кроме манулала, можно почитать, или подкинь идею!
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 16:47:43
sort($Files);
Название: usort
Отправлено: xax от 10 Февраля 2004, 16:48:44
а поподробнее
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 16:50:24
беда в том, что ты не понимаешь смысла и механизма работы этой функции.
а еще в том, что она тебе не нужна :-)

а еще в том, что форум плохо показывает новые сообщения.
я это пропустил
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 16:51:28
подробнее - вставб эту строчку в суой скрипт вместо всей своей тряхомудии
Название: usort
Отправлено: xax от 10 Февраля 2004, 16:53:31
Я понимаю, но не всё, вот в этом и есть проблемма!
Я могу сделать список из слов в самом документе, и его отсортировать, но вот массив - я не могу придумать никак!
Есть конечно звращённая идея - сделать вывод чётных и нчётных строк по отдельности и обе их по очереди сортировать, но это сам понимаешь - ужас!
Подай идею или дай ссылки! Плиз!
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 16:53:49
погоди.
что такое "второй столбик"?
ты можешь внятно объяснить, что это за массив?
Название: usort
Отправлено: xax от 10 Февраля 2004, 16:58:20
Да! Массив - этотекстовый файл в котором кадая строка это информация об отдельной игре, отделяются столбики ;

во втором столбике названия игр!
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 17:02:36
горе ты мое
столбики...
Название: usort
Отправлено: xax от 10 Февраля 2004, 17:06:43
Это не столбики? Или это нельзя отсортировать?
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 17:19:16
тебе объяснить, или готовый код дать?
Название: usort
Отправлено: xax от 10 Февраля 2004, 17:23:24
Лучше и то и другое!
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 17:58:13
ну, это будет жирно.

$f1 и $f2 - это строки твоего массива.
функция usort по очереди передает их функции cmp, для того, чтобы узнать, какая больше, а какая меньше
короче, тебе на эту тему заморачиваться не надо

а вот в функции cmp ты должен сравнивать переданные строки, выяснять, какая больше, и возврящать результат.
понятно?

вот в функции cmp тебе и нужны будут твои
$str_arr[1]
получаешь их от $f1 и от $f2 и сравниваешь, кк в примере к usort написано.
Название: usort
Отправлено: xax от 10 Февраля 2004, 18:45:21
Я не совсем понял, но вот как понял

  $file="news/news.txt";
  $arr=file($file);
  for ($i=0;$i<=count($arr)-1;$i++) {
   $str=explode(";",$arr[$i]);
function Cmp($str[0],$str[0])
{
if(is_dir($str[0]) && !is_dir($str[0])) return -1;
if(!is_dir($str[0]) && is_dir($str[0])) return 1;
if($f1<$f2) return -1; elseif($str[0]>$str[0]) return 1; else return 0;
}

uksort($Files,"Cmp");
while (list($key, $value) = each($str[0])) {
   echo "$key: $value\\n";
}
?>
$str[0] я заменил, так как этот оператор выводит весь список столбца!
Зы пишет, что ошибка на 6 строчке!
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 18:47:58
не, я пас.
может, найдется добрая душа...
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 18:49:34
один тебе совет напоследок.
прежде, чем добавлять новые фичи в свой код (например, сортировку)

ПОЙМИ, ЧТО ДЕЛАЕТ ТОТ КОД, КОТОРЫЙ У ТЕБЯ УЖЕ ЕСТЬ!
Название: usort
Отправлено: xax от 10 Февраля 2004, 18:57:22
Блин, Ром, ненадо прям сразу - я пас, я, вроде, понимаю, что делает мой код
Вроде так
$file="news/news.txt"; (Тут пишем адрес массива из которого беруться данные)
$arr=file($file); (Показываем что есть arr)
for ($i=0;$i<=count($arr)-1;$i++) { (Это отвечает за то, что нам будет выводиться при адрес?i=число)
$str=explode(";",$arr[$i]);
Ром ну помоги
Название: usort
Отправлено: xax от 10 Февраля 2004, 18:57:52
или ты про другой?
А ты мне привёл примр, где надо прописывать каждую строку в скрипт, а что делать если у тебя 100 - 1000
строк?
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 19:04:44
Цитировать
Показываем что есть arr

кому показываем?
что показываем?
зачем показываем?
Цитировать
Это отвечает за то, что нам будет выводиться при адрес?i=число

ЭТО у нас ВЫВОДИТ твой долбаный массив!
а это значит, что сортировать надо ДО ЭТОГО!
Название: usort
Отправлено: xax от 10 Февраля 2004, 19:11:30
Следовательно так?:
  $file="news/news.txt";
  $arr=file($file);
function cmp($a, $b)
{
   if ($a == $b) {
       return 0;
   }
   return ($a < $b) ? -1 : 1;
}

$a = array($str[0], $str[0]);

usort($a, "cmp");

while (list($key, $value) = each($a)) {
   echo "$key: $value\\n";
}
?>
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 19:18:27
тебе надо ВНУТРИ функции cmp делать explode а и б!
и сравнивать $str[1] от них
Название: usort
Отправлено: xax от 10 Февраля 2004, 19:23:05
Можно в этом моменте по - подробнее?
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 19:26:19
усортом тебе надо сортировать твой массив со строчками, чудило, а не это аааааа.
ни хрена ты не понимаешь вообще, что ты делаешь.
вот, выясни сначала
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 19:27:55
сначала это ты мне поподробнее рассказешь, что делает твой код безо всякой сортировки.
Название: usort
Отправлено: xax от 10 Февраля 2004, 19:37:05
Щас уже - да!
Можешь написать в виде части кода, что ты имеешь ввиду
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 19:47:08
ну, раз можешь - так давай, рассказывай.
Название: usort
Отправлено: xax от 10 Февраля 2004, 23:07:21
А что именно рассказать?
Зачем мне или что делает скрипт с точки зрения пхп?
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 23:38:06
что делаешь ты, ставя ту или иную команду ПХП.
Поскольку ты совершенно не понимаешь, в каком месте тебе надо делать explode при сравнении, я делаю вывод, что ты не понимаешь что оно делает в твоем скрипте
Название: usort
Отправлено: Меняздесьдавнонет от 10 Февраля 2004, 23:42:59
только не думай, что ты отделаешься одним эксплодом.
опиши всю программу построчно.

Поверь, я не издеваюсь.
Но видеть, как ты с осмысленностью обезьяны переставляешь кусочки кода, как картинки в паззле - у меня сердце кровью обливается.

Давай, мы потратим немного времени, но ты будешь понимать, что делает каждая строчка твоей программи, и если тебе понадобится сортировка, ты будешь знать, куда ее впендюрить
Название: usort
Отправлено: xax от 11 Февраля 2004, 00:04:50
ок
Следовательно так?:
$file="news/news.txt"; //Ссылка на массив
$arr=file($file); //$arr - берётся из данного массива
function cmp($a, $b) //Не уверен, сравнивает оператор а и б
{
if ($a == $b) {              //Если они равны по значению (по буквам)
return 0;                      //То выводятся одинаково
}
return ($a < $b) ? -1 : 1;  //Если а выше по алфавиту, то она выше б
}

$a = array($str[0], $str[0]);        //Создаёт массив (Вроде)

usort($a, "cmp");                      //Сортирует

while (list($key, $value) = each($a)) {     //не знаю
echo "$key: $value\\n";                  //Выводит
}
?>
Название: usort
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 00:55:14
у тебя был не этот.
этот - просто бред сивой кобылы.

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

Цитировать
$file="news/news.txt"; //Ссылка на массив

супер.
объясни мне, где здесь массив, и где - ссылка.
И, заодно - слышал ли ты что-нибудь о переменных?


Цитировать
$arr=file($file); //$arr - берётся из данного массива

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

Цитировать
Создаёт массив (Вроде)

ЗАЧЕМ?
Название: usort
Отправлено: xax от 11 Февраля 2004, 00:57:52
Да о перемнных слышал, о файлах тоже!
Про массив я сказал, что не уверен!
А про старый там и так есть комментарии, что там ещё написать?
Название: usort
Отправлено: xax от 11 Февраля 2004, 01:01:18
Есть код:
// Эта функция должна сравнивать значения $f1 и $f2 и возвращать:
// -1, если $f1<$f2,
// 0, если $f1==$f2
// 1, если $f1>$f2
// Под < и > понимаем следование этих имен в выводимом списке
function FCmp($f1,$f2)
{ // Каталог всегда предшествует файлу
if(is_dir($f1) && !is_dir($f2)) return -1;
// Файл всегда идет после каталога
if(!is_dir($f1) && is_dir($f2)) return 1;
// Иначе сравниваем лексиграфически
if($f1<$f2) return -1; elseif($f1>$f2) return 1; else return 0;
}
// Пусть $Files содержит массив с ключами - именами файлов |Т У Т  ВОПРОС имеется ввиду, что $Files должен содеражть массив - это ссылка на файл с массивом? И выглядеть это должно так $Files="news/news.txt";
// в текущем каталоге. Отсортируем его.
uksort($Files,"FCmp"); //передаем функцию сортировки "по ссылке"
Название: usort
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 01:06:12
а теперь мои комментарии

объясняем парсеру ПХП, что хтмл кончился, и дальше идет пхп.

$file="news/news.txt";
ПЕРЕМЕННОЙ с именем $file присваиваем значение news/news.txt
переменная типа "строка".

$arr=file($file);
переменной с именем $arr присваивается результат работы функции file
результатом является переменная типа "массив", который получается при чтении файла, имя которого содержится в переменной  $file

массив - переменная из переменных.
массив состояит из ячеек, в которых лежат переменные.
как бутылки в ящике.
ты можешь вытащить любую бутылку, можешь перебрать их по очереди.
так и с переменными в массиве.
в твоем массиве лежат строки из файла.
Название: usort
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 01:11:38
Цитировать
RomikChef:
А про старый там и так есть комментарии, что там ещё написать?

ну, раз там есть комментарии, то тебе ничего не стоит адаптировать этот код под себя - правда? :-)
Название: usort
Отправлено: xax от 11 Февраля 2004, 01:17:29
А мне нужны столбики из файла? Если да, то как это реализовать?
Вроде str полностью этому удовлетворяет?
Название: usort
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 01:58:17
у тебя не столбики, а строки.
завтра продолжим учиться

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

как можно сортирровать то чего нет?
Название: usort
Отправлено: xax от 11 Февраля 2004, 18:10:10
Так!
   $file="news/news.txt";
  $arr=file($file);
  for ($i=0;$i<=count($arr)-1;$i++) {
   $str=explode(";",$arr[$i]);
   $menu.="$str[0]
";
  }
 echo $menu;
 ?>
Название: usort
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 18:38:23
рассказывай.
что делает этот код.
ты уже достаточно подкован.
Название: usort
Отправлено: xax от 11 Февраля 2004, 18:53:52
$file="news/news.txt"; //Переменная бурещая данные из файла
  $arr=file($file);   //Переменная arr берётся из файла
  for ($i=0;$i<=count($arr)-1;$i++) {    //Вывод массива
   $str=explode(";",$arr[$i]);   //Тут описываем откуда берётся столбик
   $menu.="$str[0]
"; //Пишем, что выводит переменная мену!
  }
  echo $menu; //Выводим мену!
Название: usort
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 19:01:11
1 неправильно.
2. сойдет.
3. сойдет
4. бред. ничего мы никому не описываем. читай документацию на explode
Название: usort
Отправлено: xax от 11 Февраля 2004, 20:34:40
1 - я не понял, что не правильно
4 Я неправильн выразился там описывается, что в строке всё разделяется через ;!
Название: usort
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 21:19:57
значит, ты хорошо понимаешь, что делалет этот код?
Вопросов у тебя нету?
отлично.
тебе надо добавить функцию сортировки.
вот добавь.
пусть неправильную.
куда ты ее добавишь?
Название: usort
Отправлено: xax от 11 Февраля 2004, 23:39:54
Есть один во прос - что тут не так?
$file="news/news.txt";
Вот код
$file="news/news.txt";
$arr=file($file);
function cmp($a, $b) //Не уверен, сравнивает оператор а и б
{
if ($a == $b) { //Если они равны по значению (по буквам)
return 0; //То выводятся одинаково
}
return ($a < $b) ? -1 : 1; //Если а выше по алфавиту, то она выше б
}

$a = array($str[0], $str[0]); //Создаёт массив (Вроде)

usort($a, "cmp"); //Сортирует
for ($i=0;$i<=count($arr)-1;$i++) {
$str=explode(";",$arr[$i]);
$menu.="$str[0]
";
}
while (list($key, $value) = each($a)) { //не знаю
echo "$key: $value\\n"; //Выводит
?>
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 10:14:20
не так то,что ты абсолютно не понимаешь, что ты делаешь.
в этом вся беда.
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:07:58
Ну блин, а как - онимаешь, я не совсем понимаю, что нужно делать с кодом сортировки!
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:16:14
Если можешь, объясни плиз!
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 19:23:56
неправда.
ты не понимаешь не то, что нужно делать с кодом сортировки, а вообще не понимаешь, что делаешь.
скажи мне - что тебе надо отсортировать.
вот в этом скрипте?
не "игры" или "столбцы", а вот в этом скрипте - что надо отсортировать?

ты даже этого не понимаешь.
причем, даже моих объяснений не понимаешь.
я не говорю, что они идеальны, но мое мнение - что ты безнадежен.
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:27:15
Сравнить $a и $b (Я сам код сортировки не правил, я думал ты хочешь, чтобы я тебе показал куда я его встявлю)
Вот он их и сортирует, ну а так как они ничему не равны, то и сортировать нечего!
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 19:41:14
я устраняюсь.
для того, чтобы ты понимал, что ты делаешь, тебе надо объяснять понятия "файл", "переменная", "массив", самые основы программирвоания.
Большинство людей, берущихся за РНР, эти вещи худо-бедно понимают.
тебе же это недоступно.
задача бесполезна.

я тебя не спрашивал, что надо сравнивать. ты бредишь. ты вообще не понимаешь, к чему ты написал это "сравнить".

я тебя спросил
ЧТО ТЕБЕ НАДО СОРТИРОВАТЬ?
а ты мне что ответил?
по-моему, до тебя даже смысл слова "сортировка" не доходит
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:42:48
Ну не надо прям сразу так устранятся!
Я вроде худо - бедно понимаю эти вещи!
Помоги!
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 19:43:13
повторяю, для тупых.
я тебя спрашивал - что тебе надо сортировать в твоем, ПЕРВОНАЧАЛЬНОМ СКРИПТЕ!
вот в этом
Цитировать
xax:
$file="news/news.txt";
$arr=file($file);
for ($i=0;$i<=count($arr)-1;$i++) {
$str=explode(";",$arr[$i]);
$menu.="$str[0]
";
}
echo $menu;

в этом!!!
без добавок того идиотического бреда, который ты туда впихиваешь!
в этом, который имеет хоть какой-то смысл!
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:45:33
Давай упростим
Вот до чего я пока дошёл!
  $file="news/news.txt";
  $arr=file($file);
  for ($i=0;$i<=count($arr)-1;$i++) {
   $str=explode(";",$arr[$i]);
$a=array($file);
asort($a);
foreach($a as $str) echo "$str
";
  }
?>
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:47:40
сОРТИРОВАТЬ НАДО $str[0]
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 19:49:24
это ты не упростил, а усложнил.
повторяю свой вопрос.
тебе не кажется он ключевым?
если тебе надо что-то отсортировать, то надо сначала ЗНАТЬ - ЧТО ИМЕННО, буратина ты деревянная!!!

А не действовать как обезьяна - АБСОЛЮТНО БЕССМЫСЛЕННО впихивать в еод новые куски, не понимая - для чего.
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:50:02
Сортировать $str[0]
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 19:50:46
Цитировать
сОРТИРОВАТЬ НАДО $str[0]

ответ неверный.
Название: usort
Отправлено: xax от 12 Февраля 2004, 19:51:52
$file - если не это, то тогда я, наверное, мало чего понимаю!
Название: usort
Отправлено: Mog. от 12 Февраля 2004, 20:01:38
xax, а может с алгоритма начнешь?
Вот так прямо в лоб :
1. У меня есть файл news.txt
2. Он состоит из строк
3. Каждая строка состоит из двух частей разделенных символом ";"
4. Мне нужно прочитать этот файл в массив и вывести массив в браузер (еще куда нибудь)
5. Перед выводом этот массив надо отсортировать ....

и т.д.
Название: usort
Отправлено: xax от 12 Февраля 2004, 20:08:31
Mog. Да это уже я думаю все поняли, я просто так чётко не смог выразить!
Название: usort
Отправлено: Mog. от 12 Февраля 2004, 20:11:12
попробуй четко выразить правила сортировки, что тебе нужно.
Название: usort
Отправлено: xax от 12 Февраля 2004, 20:12:17
Нужно выделить столбик и каждую строчку отсортировать относительно другой по алфавиту!
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 20:14:43
нет, не $file
Цитировать
xax:
то тогда я, наверное, мало чего понимаю!

об этом я тебе и толкую
в этом-то вся  беда.
Название: usort
Отправлено: xax от 12 Февраля 2004, 20:16:20
Я щас подумаю
Название: usort
Отправлено: xax от 12 Февраля 2004, 20:21:01
Вот так
$a=array("a"=>"Zero","b"=>"world","c"=>"Alan","d"=>"Tsabu");
Тут мы сотрируем по ключам! так?
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 20:30:40
во-первых, где ты набрался таких слов - сортируем по ключам?
во-вторых, если ты не будешь употреблять слов, смысла которых ты не понимаешь, то будет лучше для всех.
в-третьих, я тебя спросил, что в ТВОЕМ скрипте надо отсортировать.
но у тебя даже с пониманием простых русских слов большие проблемы.
Название: usort
Отправлено: xax от 12 Февраля 2004, 20:40:50
Массив
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 20:52:29
какой массив?
Название: usort
Отправлено: xax от 12 Февраля 2004, 21:04:31
Который создаётся из файла!
Название: usort
Отправлено: Меняздесьдавнонет от 12 Февраля 2004, 21:15:42
ну вот. что и требовалось доказать.с трех попыток ты не смог верно ответить на вопрос.
для тебя алгоритм, описанный могом, и код, который ты где-то стырил, - совершенно не пересекаются.
потому, что конкретный кусок кода ты вставить не можушь.
все, гудляй.
купи себе книжку по пхп.
Название: usort
Отправлено: xax от 12 Февраля 2004, 21:23:41
Так я тут с 3 книжками сижу!
И ну буь немного терпимее!
Название: usort
Отправлено: xax от 13 Февраля 2004, 00:33:56
Так правильно?
  $file="news/news.txt";
  $arr=file($file);
function cmp($a, $b)
{
   return strcmp($a["fruit"], $b["fruit"]);
}

$strq[]["fruit"] = "abs";
$strq[]["fruit"] = "apples";
$strq[]["fruit"] = "grapes";

usort($str, "cmp");


  for ($i=0;$i<=count($arr)-1;$i++) {
    $str=explode(";",$arr[$i]);
   while (list($key, $value) = each($strq)) {
   echo "\\$strq[$key]: " . $value["fruit"];
}
}
?>
Название: usort
Отправлено: Mog. от 13 Февраля 2004, 11:26:57
[OFF]Мля![/OFF]
xax Дай пример (кусок файла, как он есть и каким ты его хочешь видеть после сортировки)
Название: usort
Отправлено: Меняздесьдавнонет от 13 Февраля 2004, 14:08:08
Mog. не надо ему пихать слюнявчик.
я все равно сотру.
это все равно, что ребенку пистолет давать. столько же смысла.
не отбирай кусок хлеба у человека, который должен сидеть на месте этого хаха.
Название: usort
Отправлено: Mog. от 13 Февраля 2004, 15:47:57
RomikChef! Я вовсе не собираюсь писать за хах\'а скрипты (если ты об этом, говоря про слюнявчик). Просто хочу помочь разобраться человеку. Может будет толк.
Название: usort
Отправлено: xax от 13 Февраля 2004, 17:21:05
Вот код
   $file="news/news.txt";
  $arr=file($file);
  for ($i=0;$i<=count($arr)-1;$i++) {
   $str=explode(";",$arr[$i]);
   $menu.="$str[0]
";
   $a.="$str[0]
";
   $time = Date("h:i:M:d:y");
  }
 echo $menu;

 ?>
А хочу я видеть, чтобы $str[0]  выводилось по алфавиту
Название: usort
Отправлено: Меняздесьдавнонет от 13 Февраля 2004, 18:24:15
Mog.
попробуй.

структура строки такая
some text 1;other text1...
some text 2;other text2...
some text 3;other text3...

соответственно,
сортировать надо по other text
Название: usort
Отправлено: xax от 13 Февраля 2004, 18:30:51
Да структура такая
Название: usort
Отправлено: xax от 13 Февраля 2004, 18:53:28
Ром, может ты всё - таки поможешь тоже?
Название: usort
Отправлено: Меняздесьдавнонет от 13 Февраля 2004, 19:28:21
смени структуру файла.
поменяй свои столбцы местами.
выводить тебе все равно какой - первый или второй, а сортировать тогда тебе и встроенная функция sort отсортирует.
ОДНА! одна функция. одна строчка к программе добавится! Только одна! а не куча всякой лабуды, которую ты впихиваешь, не понимая смысла
ну, и вывод придется поменять.
но ты уж, надеюсь, хоть  справишься.

тебе надо отсортировать массив, полученый из файла, массив, который ты потом выводишь.
у тебя и массив есть, и вывод есть.
а ты херню всякуюпихаешь - и массив новый создаешь, и вывод какой-то уродский впихиваешь.
Название: usort
Отправлено: xax от 13 Февраля 2004, 19:40:28
Просто     sort($file); ?
Название: usort
Отправлено: Меняздесьдавнонет от 13 Февраля 2004, 19:48:20
Просто sort($file);
Название: usort
Отправлено: xax от 13 Февраля 2004, 19:49:39
а потом как он это выведет в эхо?
Не надо?
while (list($value) = each($file)) {
   echo "$value";
}
Название: usort
Отправлено: Меняздесьдавнонет от 13 Февраля 2004, 19:50:00
какой $file?????????????????
ТОРМОЗ!
ты так ни хера и не понял, что делает твоя программа
Название: usort
Отправлено: Меняздесьдавнонет от 13 Февраля 2004, 19:53:20
Цитировать
RomikChef:
а потом как он это выведет в эхо?

придурок, у тебя вывод в эхо УЖЕ ЕСТЬ.
Название: usort
Отправлено: xax от 13 Февраля 2004, 19:58:33
Вобщем я разобрался, пока правда, на упрощённой модели сего кода:
 $a = array(d, a, g, c, p);
asort($a);
while (list($key, $value) = each($a)) {
   echo "$value";
}
 ?>
Название: usort
Отправлено: xax от 13 Февраля 2004, 23:44:45
Выдаёт мне, что Warning: sort() expects parameter 1 to be array, string given in E:\\Program Files\\Apache Group\\Apache2\\Index\\Hi1\\spisok.php on line 4
Название: usort
Отправлено: xax от 13 Февраля 2004, 23:55:16
Ром, вобщем вот так работает
   $file="news/news.txt";
  $arr=file($file);
  for ($i=0;$i<=count($arr)-1;$i++) {
   $str=explode(";",$arr[$i]);
   sort($str);
   $menu.="$str[0]
";
  }
  echo $menu;
 ?>
Но выводит только 2 строчки из столбика!
Название: usort
Отправлено: xax от 14 Февраля 2004, 00:05:44
Вернее так
   $file="news/news.txt";
  $arr=file($file);
  for ($i=0;$i<=count($arr)-1;$i++) {
   $str=explode(";",$arr[$i]);
   sort($arr);
   $menu.="$str[0]
";
  }
  echo $menu;
 ?>
Название: usort
Отправлено: xax от 14 Февраля 2004, 00:22:49
Если кому нужно, то вот код, которого я так долго добивался
   $file="news/news.txt";
  $arr=file($file);
     sort($arr);
  for ($i=0;$i<=count($arr)-1;$i++) {
   $str=explode(";",$arr[$i]);
   $menu.="$str[0]
";
  }
  echo $menu;
 ?>
правда есть одно но, и оно большое, код портит ссылки на строки: если у вас выводится по алфавиту, то ссылки выводятся неправильно!
Название: usort
Отправлено: Меняздесьдавнонет от 14 Февраля 2004, 00:27:23
а ты там, куда ссылка ведет, тоже сортируй.
Название: usort
Отправлено: xax от 14 Февраля 2004, 00:29:43
Что ты имеешь ввиду?
Название: usort
Отправлено: xax от 14 Февраля 2004, 00:38:37
Расскажи по - подробнее, как сортировать ссылки!
Название: usort
Отправлено: Меняздесьдавнонет от 14 Февраля 2004, 00:47:54
ссылки ортировать не надо.
там, куда ведет эта ссылка, тоже sort сделай, чудик
Название: usort
Отправлено: xax от 14 Февраля 2004, 00:54:17
Спасибо, всё работает