Всем привет! У меня такой вопрос: Имеется файл с таким вот содержанием: Авто Авто/Автокосметика Авто/Автокосметика/Автошампуни Авто/Автокосметика/Автоэмали Авто/Автокосметика/Грунтовка Авто/Автокосметика/Очистители Авто/Автокосметика/Полироли Авто/Автокосметика/Шпатлевка Авто/Автохимия Авто/Автохимия/Антикоры Авто/Автохимия/Антифризы Авто/Автохимия/Герметики Авто/Автохимия/Жидкости для ГУР Авто/Автохимия/Масло трансмиссионное Авто/Автохимия/Моторные масла Авто/Автохимия/Присадки в масло Авто/Автохимия/Присадки в топливо Авто/Автохимия/Промывки и промывочное масло Авто/Автохимия/Смазки Авто/Автохимия/Тормозные жидкости Файл я обрабатываю вот так: Код (Text): $result = array(); $content = file('test.txt', FILE_IGNORE_NEW_LINES); foreach ($content as $line) { $data = mb_split('/', $line); $link = &$result; foreach ($data as $item) { if (!isset($link[$item])) { $link[$item] = array(); } $link = &$link[$item]; } } В $result теперь массив. Но мне нужно сделать так,чтобы у каждого элемента были ключи id, parent_id, и name. Один ссылается на другой. Надеюсь понятно объяснил задачу.. P.S: Либо перегнать все это в Nested Sets, было бы вообще замечательно
П.М.С.М. у тебя на выходе не очень качественный массив. В нем часть элементов со слешем, а часть без слешей. Я бы привел данные к такому виду, чтобы можно было буквально искать (псевдокод) Код (PHP): foreach ($items as $id => $str) { // ... $name = последний сегмент str // ... $parent_name = str без последнего сегмента; $parent_id = array_search($parent_name, $items); // ... сохраняем id, parent_id, name } Добавлено спустя 11 минут 39 секунд: Моё полное решение: http://phpfiddle.org/lite/code/0fjx-z5ah Добавлено спустя 6 минут 38 секунд: Ну а преобразование AL в NS это популярная тема в интернетах. Вот побыстрому нагуглил: https://github.com/Humen/Tree
вместо $items = array_filter(array_map('trim', $items), 'strlen'); можно добавить флаг FILE_SKIP_EMPTY_LINES в file()