| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > сортировка массива с помощью krsort |
| Автор: Oughtem 4.2.2009, 01:26 | ||
| Прошу помощи знатоков. Есть некий плагин для некой КМС и некий файл этого плагина. Этот файл обрабатывает данные из базы и строит топ самых активных пользователей на сайте учитывая Дату Регистрации, кол-во комментариев, кол-во страниц, файлов и постов, определяя переменную "Рейтинг" и выводя таблицу с TOP10 юзеров Сам файл вот (извиняюсь за простыню - спойлера не нашёл)
Всё считает, обрабатывает, но... В этом фале работает функция krsort($user_array), и работает коряво - она должна выводить сортировку по рейтингу, а выводит сортировку по дате регистрации юзера. Оч. прошу, подскажите, где подкрутить, чтоб сортировало по рейтингу - его же высчитываем. Заранее спасибо. |
| Автор: ViniPuh 4.2.2009, 08:28 |
| krsort делает далеко не то что вам нужно. krsort — Отсортировать массив по ключам в обратном порядке Документация: http://www.php.net/manual/ru/function.krsort.php Вам скорее всего нужны: http://www.php.net/manual/ru/function.uasort.php или http://www.php.net/manual/ru/function.usort.php. Там есть описание и примеры. |
| Автор: Oughtem 4.2.2009, 09:18 |
| хм... так мне же и надо отсортировать по ключу в обратном порядке, т.е., чтоб сверху были те, у кого рейтинг выше. Или я вас не правильно понял? |
| Автор: ksnk 4.2.2009, 09:38 |
| Oughtem, Нужно ответить себе на вопрос. В какое место уходят индексы MySql, если данные уже прочитаны и переложены в массив PHP. После этого почитать про другие методы сортировки... хотя, полезнее, для этой задачи, почитать про SQL... |
| Автор: Oughtem 4.2.2009, 09:55 | ||||
ksnk, я попробовал uasort, usort, uksort. Работает, сортирует по рейтингу, но везде ругается на значение ключа функции (как я понял) Warning: Wrong parameter count for uksort() in ..../activepanel.inc.php on line 108 line 108 это
что-то не правильно... |
| Автор: Oughtem 4.2.2009, 15:53 | ||||
Это классно, что вы заставляете думать, но я вообще ничего не понимаю в PHP, хотя оч. хочу научиться хотя бы "читать" код. Я так понимаю, что кусок кода, где мне надо рыться это
я хочу сам разобраться без прямой подсказки типа "замени это на это". Но я не понимаю до конца суть данного участка кода. Вот как я вижу этот код 1. uksort сортирует массив заданный этим: $user_array[$rating*100][$row['user_id']] = array("str" => ..... Индексом выступает [$rating*100], что такое [$row['user_id']] и array("str" => - я не пойму. 2. Идёт "обход" массива (это я читал) с помощью foreach. Зачем оно нужно я тоже не пойму. Но ладно, дальше. $user_array должен восприниматься как $k, $k как $i Зачем - не понятно. 3. Суть этого участка
для меня вообще покрыта мраком. Вот так и кручу этот код "Прочитайте" его пожалуйста, чтоб понятно было суть каждой переменной и действий над ними. |