Сортировка данных в массиве.

zIP

Новичок
Сортировка данных в массиве.

Есть массив строк:

element_1/sub_element_66/sub_element_2/sub_element_3
element_1/sub_element_4/sub_element_8/sub_element_9
element_1/sub_element_11/sub_element_15/sub_element_20
.....
element_100/sub_element_444/sub_element_86/sub_element_889

Первый элемент как бы ключ. Его могут содержать несколько строк.

Причем количество элементов в строках не одинаковое

Как можно вывести все ключевые элементы и соответствующие им элементы строк?
 

Panchous

Павел
сформировать нужный массив с твоими ключами,
а его еэлементы - будут массивы со строками...
пригодится: [m]foreach[/m], [m]array[/m]
 

zIP

Новичок
Автор оригинала: Panchous
сформировать нужный массив с твоими ключами,
а его еэлементы - будут массивы со строками...
пригодится: [m]foreach[/m], [m]array[/m]
Насколько я понимаю задачу, нужно сформировать новый массив с подмассивами.
 

zIP

Новичок
А как это будет выглядеть?

PHP:
$parts = explode("/", $line);
Далее $parts[0] - Ключ нового массива.

Все остальное будет элементами подмассива.

Считаем элементы строки



PHP:
for($i = 0; $i < count($parts); $i++)
А вот дальше....
 

Panchous

Павел
сначала опиши подробно структуру, которую хочешь получить - она сама алгоритм подскажет...
 

zIP

Новичок
Автор оригинала: Panchous
сначала опиши подробно структуру, которую хочешь получить - она сама алгоритм подскажет...
Структура такая.

Все не совпадающие первые элементы массива становяться ключами в новом массиве.

Все элементы стоящие за первым становяться элементами соответствующих ключей.
 

zIP

Новичок
Автор оригинала: Panchous
т.е. вся строчка после первого "/" добавляется в массив для данного ключа?
Поправка - все элементы строки после первого "/" и разделенные /.

Вот две строки исходного массива:

element_1/element_2/element_6

element_1/element_7/element_9/element_11

Новый массив

Ключ - element_1.

Соответствующие ему значения - element_2, element_6, element_1, element_7, element_9, element_11
 

Panchous

Павел
[m]foreach[/m] по всем строкам:
1. разбиваешь строку на элементы: $parts = [m]explode[/m]("/", $line)
2. формируешь новый массив: кладешь в $new_array[{КЛЮЧ}] все остальные элементы строки - массив $parts без первого элемента:
$new_array[{КЛЮЧ}][] = $parts[$i] (в цикле по $parts)
 

zIP

Новичок
Так ведь надо еще сформировать ключи.

Их же несколько будет. Строки идут с повторяющимися ключами. Их надо выделить и сформировать массив.

Т.е. найти и отсортировать уникальные для формирования ключей в новом массиве.

-~{}~ 31.08.06 12:31:

Т.е. как прочитать массив и выделить элементы я знаю, а вот дальше... Проблема с сортировкой.
 

Panchous

Павел
причем здесь сортировка?
чем тебя не устраивает мой алгоритм?
 

zIP

Новичок
Так первые элементы в исходном масиве строк во многих случаях совпадают.

-~{}~ 31.08.06 12:58:

А... Балда. Все, понял.
 
Сверху