Сортировка массива

Vasiliy

Guest
Сортировка массива

SOS срочно помогите, горю, пожалуйста

это содержимое файла data.txt

# полномочия пользователей

# формат: пользователь группа комментарий

user3 group3 comment
user1 group1
user2 group2
user1 group2 comment
user4
user3 group2
user2 group4 comment
user3 group1

Задача
В файле data.txt определены полномочия пользователей.
Задача: используя данные указанного файла, вывести список пользователей,
отсортированный в обратном порядке с указанием всех групп, в которые
входит пользователь, т.е.:

user4:
user3: group1, group2, group3
user2: group2, group4
user1: group1, group2

Пожалуйста помогите:(, написать код
 

SiMM

Новичок
Ответь вначале на вопрос, который я тебе уже задавал. Что именно вызывает трудности? Сортировка? [m]sort[/m] и далее по ссылкам...
 

Vasiliy

Guest
Вобщем то всё, впринципе отсорт. можно, но вот как сопоставить группы, эххх
 

SiMM

Новичок
Чего их сопоставлять-то?
Делаешь обход первоначального массива, и добавляешь в новый массив к элементу с индексом user строку с group (хотя есть ещё и другой вариант). После этого остаётся только сделать [m]ksort[/m] и вывести результат
 

SiMM

Новичок
А так и выглядит. Я не понимаю, ты за готовым кодом пришёл? Тогда вопрос надо было задавать в другом подфоруме - он где-то рядом с корзиной. Попытка номер два.
У тебя есть исходный массив с данными из твоего файла. Пусть будет $in. Инициализируешь выходной массив $out = array(); Далее циклом проходишься по входному массиву $in, на каждой итерации выделяя в текущем элементе массива $in имя пользователя ($name) и его группу ($group). К элементу массива $out с индексом, равным полученному пользователю ($name), добавляешь имя его группы ($group). Всё. Далее сортируешь по индексу и выводишь результат.
 

krafty

new Exception
2Vasiliy
хотя бы скелет собственного кода привел. если не можешь - нечего тебе делать на форумах. здесь учить тебя не будут. на мысль натолкнули, ссылки на описание функций дали. что еще - иди и читай.
прочти сначала про работу с массивами в php. потом про то, как читать данные из файла. также я думаю не помешает с циклами познакомиться. нет книги - ищи в интернете. инфы по php хватает. смысл, если тебе предоставят готовый код? а дальше как? снова на форум за исходниками?
 

Jaizer

Новичок
Вообще-то не помешало бы ознакомиться с самим алгоритмом сортировки (есть почти в любой книжке по программированию)
 

SiMM

Новичок
> Вообще-то не помешало бы ознакомиться с самим алгоритмом сортировки (есть почти в любой книжке по программированию)

В случае с PHP в этом нет никакой необходимости.
 

Jaizer

Новичок
SiMM
По крайней мере, для общего развития не помешает... =)
 

sal

Новичок
SiMM
В случае с PHP в этом нет никакой необходимости.
А по какому алгоритму работают функции sort (и ей подобные ksort, rsort ...)?
И всегда ли используя эти функции достигается максимальная производительность?
Или в случаях когда необходимо обрабатывать большие объемы данных имеет смысл использовать PHP+MySQL где сортировкой и поиском, а так же хранением данных будет заниматься MySQL?
 

SiMM

Новичок
> А по какому алгоритму работают функции sort (и ей подобные ksort, rsort ...)?
А какая разница? sort, ksort, rsort, ... Остальное предлагаю найти и посмотреть самостоятельно.

> И всегда ли используя эти функции достигается максимальная производительность?
Вам делать нечего? PHP не предназначен для таких задач, где это имело бы значения. Вы таки хотите сказать, что будете сортировать массив, находящийся в памяти, и состоящий из миллиона элементов? Нет? Тогда почему вас интересует вопрос оптимальности алгоритма и его быстродействие на массиве из десятка элементов?

> Или в случаях когда необходимо обрабатывать большие объемы данных имеет смысл использовать PHP+MySQL где сортировкой и поиском, а так же хранением данных будет заниматься MySQL?
А данные для сортировки вы где хранить думаете? В файлах? Нет? А вывод пользователю оформлять как? Сразу всё содержимое базы? Нет? Ну дак поздравляю - вы уже используете средства SQL. Только не понятно почему вы не желаете их использовать полностью.
 

Vasiliy

Guest
Ну народ, если не знаете как делать, так и скажите. Я же говорю это работодатель так проверяет знания PHP.
 

Vasiliy

Guest
Я просто прошу помощ, впринципе, я не пойду туда, куда мне предложили, но вот задание хотелось бы узнать как делать.
Я PHP 1 год рублю. www.webarrows.ru, полностью написал сам.
 

SiMM

Новичок
Плохо рубишь. Задачка, кстати, к PHP отношения не имеет. У тебя походу с алгоритмом проблемы. При чём - капитальные. Поскольку даже словесное описание алгоритма - не помогает. PHP - это не только синтаксис, как и в любом другом языке программирования знания синтаксиса недостаточно, для того, чтобы называться программистом.
PHP:
foreach ($in as $v){
  $k = explode(' ',$v,3);
  $out[rtrim($k[0])][] = isset($k[1]) ? rtrim($k[1]) : '';
}
Остальное - самостоятельно. Ибо делать там больше практически нечего.
 
Сверху