Народ приветствую. Есть небольшая логическая задачка - уже "сломал" голову. Прошу помощи. Задача в следующем: Общий смысл - отображение только тех подразделов меню, где есть элементы. Схема: РАЗДЕЛ 1 -подраздел 1 -подраздел 2 РАЗДЕЛ 2 -подраздел 1 -подраздел 2 -подраздел 3 Количество Разделов и подразделов задается в 2-х файлах, пользователь просто вводит их через запятую: файл 1 РАЗДЕЛ 1, РАЗДЕЛ 2, ..... файл 2 подраздел 1, подраздел 2, подраздел 3..... Соответственно как сделать выборочное отображение подразделов в РАЗДЕЛЕ, при условии, если в подразделе есть загруженные элементы? Предполагаю делать это динамически создавая на каждый РАЗДЕЛ собственный массив, а туда "запихивать", подразделы элементов, которые соответствуют этому РАЗДЕЛУ. Как реализовать динамическое создание массивов на пхп?? Большое спасибо!
зачем такие сложности-то? мыне ищем легких путей? ты скаже не то, что у тебя реализовано, а сформулируй задачу в общем виде, не думая об реализации. 100% даю есть более легкое красивое решение.
РАЗДЕЛ 1 -подраздел 1.1 -подраздел 1.2 РАЗДЕЛ 2 -подраздел 2.1 -подраздел 2.2 -подраздел 2.3 вообще это древовидная структура.... explode для парсинга... но я не вполне понял=) мне кажется подход не совсем верный=)
абсолютно согласен - подход не совсем понятный и возможно неверный, сложности только из-за того - что ВСЯ база сайта - это текстовые файлики... 2 настроечных файла - отображаются через комбо (раздел и подраздел) - соответственно таким образом "разбрасывается" товар ... изначально должно быть создание массивов на основе существующих товаров (эмммм... динамически создаем массив на первый РАЗДЕЛ, перебираем базу.... - добавляем все подразделы соответствующие этому разделу) и т.д... проблемы - просто не могу понять как создать n-динамических массивов (для раздела)....
я не совсем понимаю как ты собираешься понимать какой подраздел к какому разделу относится. я бы предложил сделать так(то же через одно место, но если есть ограничения...): файл с разделами. файл с подразделами, родители определяються переносом строки. читая файл каждую строку переносим в свою переменную(элемент массива). Затем пробегаемся по ним explode(",", $str); хотя встают ещё куча вопросов...
хорошо, привожу код как это реализовано PHP: if ($kolvo_meb[$tovals_meb]=="Мебель для прихожей"){ $exists = in_array($razdel_meb[$tovars_meb], $homeinterier); if ($exists!=TRUE){ array_push($homeinterier, $razdel_meb[$tovars_meb]); } } $homeinterier - это массив раздела "Мебель для прихожей". В кратце алгорим такой. 1.Создаем на каждый раздел свой массив! (собственно в этом и загвоздка... как создать динамически, если разделов куча). 2.Перебираем все файлики товаров и "выкусываем" те, в которых прописан этот "раздел", смотрим на "подраздел" в и делаем array_push в $homeinterier ... Собственно так создается меню... а функция explode() - применялась ранее, для того что-бы "разрезать" текстовый файлы по "запятой".
жуть какая-то, а не создание дерева. массив на раздел: PHP: $array_parent=explode(",", "Раздел 1, Раздел 2, Раздел 3"); FOREACH ($array_parent as $key=>$vlue){ $name='parent'.$key;//или как там душе угодно $$name=array('name'=>$value); } вот наверное как-то так=)) а вообще задачу лучше оформлять абстрагировано. т.е. именно ту часть которая не получается=) или появляется желание изменить вообще всё=) хотя парой лучше поступить именно так...
За код спасибо. А как добавить элемент в такой созданный массив (т.е. имеется ввиду не $parent1[0]="AAA")
РАЗДЕЛ 1 -подраздел 1 -подраздел 2 РАЗДЕЛ 2 -подраздел 1 -подраздел 2 -подраздел 3 PHP: <?php $menu = array( 0 => array( 'РАЗДЕЛ 1', array( 'подраздел 1', 'подраздел 2', ) ), 1 => array( 'РАЗДЕЛ 2', array( 'подраздел 1', 'подраздел 2', 'подраздел 3' ) ), ); ?> больше ниче не могу сказать, т.к. непонятно КАКУЮ ЗАДАЧУ ты ставишь, кроме как фразы которая постоянно лидирует среди других - динамические массивы.... ЗАЧЕМ ОНИ??? Опиши задачу, что и как у тебя хранится в этом меню, какой функционал должен быть реализован и проч.
во, альтернатива Serialize PHP: <? function FormArray($arr) { $res=array(); if(empty($arr)) return "array()"; foreach($arr as $key=>$val) { if(!is_array($val)){ $res[]="\"$key\"=>\"$val\""; } else { $res=array_merge($res,array(FormArray($val))); } } return "array(".implode(",",$res).")"; } ?>