Как собрать массив из строчных данных
Здравствуйте помогите пожалуйста понять алгоритм сборки данных в массив. надо собрать дерево категорий из строчных даных, все строки с ':' это данные которые должны быть в соответствующей категории. Пример данных
db1
catA
cat1a1
prod1:a0
prod2:a0
prod3:a0
cat2a2
prod1:a1
prod2:a1
prod3:a1
catB
cat1b1
prod1:b0
prod2:b0
prod3:b0
cat2b2
prod1:b1
prod2:b1
prod3:b1
db2
catC
cat1c1
prod1:c0
prod2:c0
prod3:c0
cat2c1
prod1:c1
prod2:c1
prod3:c1
catD
cat1d2
prod1:d0
prod2:d0
prod3:d0
cat2d2
prod1:d1
prod2:d1
prod3:d1
на выходе должен получится массив
$db = [
'db1' =>
[
'catA' =>
[
'cat1a1' => ['prod1:a0', 'prod2:a0', 'prod3:a0'] ,
'cat2a2' => ['prod1:a1', 'prod2:a1', 'prod3:a1']
],
'catB' =>
[
'cat1b1' => ['prod1:b0', 'prod2:b0', 'prod3:b0'],
'cat2b2' => ['prod1:b1', 'prod2:b1', 'prod3:b1']
]
],
'db2' =>
[
'catC' =>
[
'cat1c1' => ['prod1:c0', 'prod2:c0', 'prod3:c0'] ,
'cat2c2' => ['prod1:c1', 'prod2:c1', 'prod3:c1']
],
'catD' =>
[
'cat1d1' => ['prod1:d0', 'prod2:d0', 'prod3:d0'],
'cat2d2' => ['prod1:d1', 'prod2:d1', 'prod3:d1']
]
]
];
дело в том что структура данных собирается по строчно, попробую объяснить: первая строка без ':' это главная категория если следующая строка тоже без знака ':' то это под категория и так далее до первой строки со знаком ':' типо db1->catA->cat1a1 если в строке есть знак ':' то данные записываются в последую под категорию.
плюс еще db1,catA,cat1a это пример, на сомом деле все данные разные я не могу ни к чему привязаться кроме знаков "\n" и ":"
db1->catA->cat1a=prod1:a0
db1->catA->cat1a=prod2:a0
db1->catA->cat1a=prod3