Создание многомерного массива с неограниченными вложениями

Создание многомерного массива с неограниченными вложениями

В таблице базы множество записей, каждая из которых является либо родителем, либо дочерним элементом.
PHP:
+--------+----------+------------- 
    id       name       parent_id 
+--------+----------+------------- 
    1        n1         0 
    2        n2         1 
    3        n3         1 
    4        n4         3 
    5        n5         0 
    6        n6         5 
    7        n7         5 
    8        n8         5 
    9        n9         5 
+--------+----------+------------
Таким образом число вложений может быть неограничено. Подскажите как мне сделать многомерный массив из этой базы, в котором соответственно сохранилась бы эта иерархия.
 

LeaetherStrip

Новичок
Наводящий вопрос:
а ты ТОЧНО уверен, что нужен именно многомерный массив?

С подобными таблицами я примерно так поступаю:

// $res = ... SELECT * FROM foo_bar;

$answ = array();

while($row = $res->fetch_array())
{
$answ[$row["parent_id"]][$row['id']] = $row;
}

ИМХО с таким массивом проще дальше работать, например, рекурсивными функциями.
 
Точно. Представь ниспадающее меню. Позиции, разделы, подразделы и так 10 уровней. Конечно можно все 10 уровней описать 10-тью циклами, но как-то некрасиво. А если 100 надо? 100 циклов?
 

Мутник

Новичок
Данила Андреев

пример рекурсивной функции, добавляющей кавычки:

PHP:
function adds(&$el,$level=0) { 
  if (is_array($el)) { 
    if (get_magic_quotes_gpc()) return; 
    foreach($el as $k=>$v) adds($el[$k],$level+1); 
  } else { 
    if (!get_magic_quotes_gpc()) $el = addslashes($el); 
    if (!$level) return $el; 
  } 
}
думаю, под твои нужды минут за 10-15 можно переделать, если не особо в этом рубишь.
 
Сверху