Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Рекурсивный вывод в многомерноый массив

Сообщения:  [1-10]    [11-20]  [21-21] 

 
 автор: Trianon   (14.06.2007 в 16:11)   письмо автору
 
   для: name   (14.06.2007 в 15:58)
 

.

   
 
 автор: Trianon   (14.06.2007 в 16:10)   письмо автору
 
   для: name   (14.06.2007 в 15:58)
 

ну....если вопрос стоит именно так - вот темы, в которых я что-то советовал:
http://softtime.ru/forum/srchform.php?id_forum=3&name=Trianon+tree&numberthemes=30&srchwhere=2&logic=1

   
 
 автор: name   (14.06.2007 в 15:58)   письмо автору
 
   для: Trianon   (14.06.2007 в 12:43)
 

Большое спасибо за помощь, Trianon!

Может Вы сталкивались с подобной задачей, знаете еще какие-нибудь скрипты (решения) и можете посоветовать как быть?

Реализовать многоуровневое меню (выплывающее), которое не будет зависить от вложенности, у меня так и не получилось.

   
 
 автор: Trianon   (14.06.2007 в 12:43)   письмо автору
 
   для: name   (14.06.2007 в 12:07)
 

кроме того, опять нарушается рекусивная структура - опять с массивом работать невозможно.
Листовые элементы каталога ничем не отличаются от нелистовых. Не надо делать их какими-то особенными.

   
 
 автор: Trianon   (14.06.2007 в 12:43)   письмо автору
 
   для: name   (14.06.2007 в 12:07)
 

нельзя.
Поскольку значений 0 1 2 нет в соответствующих строках таблицы.

   
 
 автор: Trianon   (14.06.2007 в 12:42)   письмо автору
 
   для: name   (14.06.2007 в 12:07)
 


<?php   include 'config.inc.php';

  
$sql "SELECT id, id_parent AS pid, name FROM catalog ORDER BY pid, id";
  
$res mysql_query($sql) or die("Error in $sql: "mysql_error());
  
$list = array();
  function 
create_tree($list$root)
  {
      
$res = array();
      
$x $list[$root];
      foreach(
$x as $k => $v)
      {
          
$res[$v] = isset($list[$k])
                   ? 
create_tree($list$k)
                   : array();
      }
      return 
$res;
  }
  if(
mysql_num_rows($res))
  {
    while(
$row mysql_fetch_assoc($res))
    {
      
$id   $row['id'];
      
$pid  $row['pid'];
      
$name $row['name'];

      if(!isset(
$list[$pid]))
          
$list[$pid] = array($id=>$name);
      else
          
$list[$pid][$id] = $name;
    }
  }

  
$out create_tree($list0);

  echo 
'<pre>';
  
print_r($out);
?>

   
 
 автор: name   (14.06.2007 в 12:07)   письмо автору
 
   для: Trianon   (14.06.2007 в 12:05)
 

а такой, можно?

$out = array('каталог' =>
                         array('вибродиагностика' =>
                                                            id       title
                                                      array('0' => 'переносная',
                                                          '1' => 'стендовая'),
                               'балансировка'       =>
                                                    array('2' => 'стационарная')
                              ),
             ); 


подскажите пожалуйста и если да, то как

   
 
 автор: Trianon   (14.06.2007 в 12:05)   письмо автору
 
   для: name   (14.06.2007 в 11:48)
 

ну если Вы не знаете, то я - тем более :))

   
 
 автор: name   (14.06.2007 в 11:48)   письмо автору
 
   для: Trianon   (14.06.2007 в 11:41)
 

Наверное, только, что будет в последних массивах - данные из бд по каждому из этих пунктов?

Посути, нужно чтобы у последних пунктов был id и title, чтобы можно было сформировать ссылку вида - <a href="index.php?action=menu&id=$id">$title</a>.

Какого вида должны быть последние вложения, я не знаю :(

   
 
 автор: Trianon   (14.06.2007 в 11:41)   письмо автору
 
   для: name   (14.06.2007 в 11:26)
 

может быть так?

$out = array('каталог' => 
                         array('вибродиагностика' => 
                                                      array('переносная' =>array() , 
                                                           'стендовая' =>array() ), 
                               'балансировка'       => 
                                                    array('стационарная' =>array() ) 
                              )
             );  

Это было бы самым логичным.

   

Сообщения:  [1-10]    [11-20]  [21-21] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования