Автор Тема: usort  (Прочитано 31191 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #15 : 10 Февраля 2004, 17:58:13 »
ну, это будет жирно.

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

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

вот в функции cmp тебе и нужны будут твои
$str_arr[1]
получаешь их от $f1 и от $f2 и сравниваешь, кк в примере к usort написано.

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
usort
« Ответ #16 : 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 строчке!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #17 : 10 Февраля 2004, 18:47:58 »
не, я пас.
может, найдется добрая душа...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #18 : 10 Февраля 2004, 18:49:34 »
один тебе совет напоследок.
прежде, чем добавлять новые фичи в свой код (например, сортировку)

ПОЙМИ, ЧТО ДЕЛАЕТ ТОТ КОД, КОТОРЫЙ У ТЕБЯ УЖЕ ЕСТЬ!

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
usort
« Ответ #19 : 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]);
Ром ну помоги

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
usort
« Ответ #20 : 10 Февраля 2004, 18:57:52 »
или ты про другой?
А ты мне привёл примр, где надо прописывать каждую строку в скрипт, а что делать если у тебя 100 - 1000
строк?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #21 : 10 Февраля 2004, 19:04:44 »
Цитировать
Показываем что есть arr

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

ЭТО у нас ВЫВОДИТ твой долбаный массив!
а это значит, что сортировать надо ДО ЭТОГО!

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
usort
« Ответ #22 : 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";
}
?>

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #23 : 10 Февраля 2004, 19:18:27 »
тебе надо ВНУТРИ функции cmp делать explode а и б!
и сравнивать $str[1] от них

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
usort
« Ответ #24 : 10 Февраля 2004, 19:23:05 »
Можно в этом моменте по - подробнее?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #25 : 10 Февраля 2004, 19:26:19 »
усортом тебе надо сортировать твой массив со строчками, чудило, а не это аааааа.
ни хрена ты не понимаешь вообще, что ты делаешь.
вот, выясни сначала

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #26 : 10 Февраля 2004, 19:27:55 »
сначала это ты мне поподробнее рассказешь, что делает твой код безо всякой сортировки.

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
usort
« Ответ #27 : 10 Февраля 2004, 19:37:05 »
Щас уже - да!
Можешь написать в виде части кода, что ты имеешь ввиду

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
usort
« Ответ #28 : 10 Февраля 2004, 19:47:08 »
ну, раз можешь - так давай, рассказывай.

Оффлайн xax

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 230
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
usort
« Ответ #29 : 10 Февраля 2004, 23:07:21 »
А что именно рассказать?
Зачем мне или что делает скрипт с точки зрения пхп?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28