Доброго вечера уважаемые форумчане. Есть у меня список товаров такого вида: категория;подкатегория;наименование;цена;размер; Все это добро нужно привести к такому формату: категория; подкатетегория; наименование;цена;размер; наименование;цена;размер; категория; подкатетегория; наименование;цена;размер; наименование;цена;размер; ит.д. Буду раз помощи. Заранее благодарен! P.S. Весь список прогоняется циклом, все элементы строки имеюстя в массиве.
т.е. смотреть совпадает ли последующий элемент с текущим, а вот как между этими не совпадающими строками вставить еще одну строку массива, я не представляю...
Если уровень вложенности подкатегорий не больше 1, то да, вполне можно обойтись простым вложенным циклом. Например, так: PHP: <?php // Название файла, в котором лежит список $filename = 'data.txt'; $path = dirname(__FILE__); $file = $path . DIRECTORY_SEPARATOR . $filename; $csv = fopen($file, 'r'); $data = array(); while($row = fgetcsv($csv, 0, ';')) { if(!array_key_exists($row[0], $data)) $data[$row[0]] = array(); if(!array_key_exists($row[1], $data[$row[0]])) $data[$row[0]][$row[1]] = array(); $data[$row[0]][$row[1]][] = array($row[2], $row[3], $row[4]); } ksort($data); $out = ''; foreach($data as $category => $catContent) { $out .= $category . '<br />'; ksort($catContent); foreach($catContent as $subcategory => $subcatContent) { $out .= ' --- ' . $subcategory . '<br />'; foreach($subcatContent as $content) $out .= ' ------- ' . implode(';', $content) . '<br />'; } } echo($out); ?> Пример содержимого файла data.txt Код (Text): Категория 2;Подкатегория 2.3;Товар 1;259 руб.;XXL Категория 2;Подкатегория 2.1;Товар 2;79 руб.;L Категория 2;Подкатегория 2.3;Товар 2;79 руб.;L Категория 1;Подкатегория 1.2;Товар 1;259 руб.;XXL Категория 1;Подкатегория 1.2;Товар 2;79 руб.;L Категория 1;Подкатегория 1.2;Товар 3;899 руб.;XL Категория 1;Подкатегория 1.1;Товар 1;259 руб.;XXL Категория 1;Подкатегория 1.1;Товар 2;79 руб.;L Категория 1;Подкатегория 1.4;Товар 2;79 руб.;L Категория 1;Подкатегория 1.4;Товар 3;899 руб.;XL Категория 1;Подкатегория 1.4;Товар 4;39 руб.;XXX Категория 1;Подкатегория 1.1;Товар 3;899 руб.;XL Категория 1;Подкатегория 1.1;Товар 4;39 руб.;XXX Категория 1;Подкатегория 1.3;Товар 4;39 руб.;XXX Категория 1;Подкатегория 1.3;Товар 1;259 руб.;XXL Категория 1;Подкатегория 1.4;Товар 1;259 руб.;XXL Категория 1;Подкатегория 1.4;Товар 2;79 руб.;L Категория 2;Подкатегория 2.3;Товар 3;899 руб.;XL Категория 2;Подкатегория 2.3;Товар 4;39 руб.;XXX Категория 2;Подкатегория 2.1;Товар 3;899 руб.;XL Категория 2;Подкатегория 2.1;Товар 4;39 руб.;XXX Категория 2;Подкатегория 2.1;Товар 3;899 руб.;XL Категория 2;Подкатегория 2.1;Товар 4;39 руб.;XXX Категория 2;Подкатегория 2.1;Товар 1;259 руб.;XXL Категория 2;Подкатегория 2.2;Товар 1;259 руб.;XXL Категория 2;Подкатегория 2.2;Товар 2;79 руб.;L Категория 2;Подкатегория 2.3;Товар 3;899 руб.;XL Категория 2;Подкатегория 2.3;Товар 4;39 руб.;XXX