как составить массив неграничиной размерности?

solaris

Новичок
как составить массив неграничиной размерности?

Собственно размерность, естесственно, будет ограничена, просто при заполнении массива, мы не знаем, какой размерности будет массив. Короче говоря, я понимаю, что могу страницами описывать это на словах, поэтому вот все это в примере:


Есть таблица MySQL, вот ее поля:
-------------------
id | pid | name|
-------------------

id - ключ и auto_increment,
в pid хранится id другой записи из этой же таблицы, что, по логике, означает, к какой записи принадлежит текщуя...

ух тяжело сформулировать....

Короче получается как матрешка, есть главные записи у них pid=0, что означают, что они самые большие "матрешки", в них есть другие "матрешки" поменьше, у них pid равен id предыдущей "матрешки" .
примерно так:

-------------------
id | pid | name|
-------------------
1 | 0 | big1 |
2 | 0 | big2 |
3 | 1 |small1|
4 | 2 |small2|
5 | 2 |small3|
6 | 4 | min1 |
7 | 6 | mi1 |


вот отсюда следует: что записи 1 и 2, самы большие, запись 3 "лежит" в записи 1; записи 4 и 5 "лежат" в записи 2, запись 6 "лежит" в записи 4, запись 7 "лежит" в записи 6.


Так вот собственно проблема: дело в том, что глубина этих "залежей" скрипту неизвестна, а данные нужно записывать в массив, для последнего примера, массив должен выглядеть так:

PHP:
 array(
  [0] => array(
             [id] => 1
             [pid] => 0
             [name] => big1
             [children] => array(0=>array(
                                                   [id] => 3
                                                   [pid] => 1
                                                   [name] => small1
                                                   [children] =>
                                                   )
                                  )
             )

  [1] => array(
             [id] => 2
             [pid] => 0
             [name] => big2
             [children] => array(0=>array(
                                                   [id] => 4
                                                   [pid] => 2
                                                   [name] => small2
                                                   [children] =>array(0=>array(
                                                                                        [id]=>6
                                                                                        [pid]=>4
                                                                                        [name]=>min1
                                                                                        [children]=>array(..id=>7
                                                                                        )
                                                   )

                                             1=>array(
                                                   [id] => 5
                                                   [pid] => 2
                                                   [name] => small3
                                                   [children] =>
                                                   )
                                  )
             )

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

вот такая головоломка:((((
Такое вообще возможно?

У меня мозг пухнет при попытке предстваить количсетво циклов....:(((

Уважаемые профессионалы, помогите пожалуйста встать на путь верный в решении этого вопроса.
Заранее спасибо!
 

solaris

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


Помогите пожалуйста:((( спать уже спокойно не могу, у меня уж мозг скоро в рекурсию войдет:(
 

Sluggard

Новичок
Про деревья на форуме много тем. Если потрудишься прочитать с пяток тем, узнаешь не только ответы на свои вопросы, но и много другого для себя интересного.
 

solaris

Новичок
ок. спасибо:))) я просто не знал, как это назвать,а соответсвенно и по каким запросам искать:)
 
Сверху