Головоломка. Составление массива из массива

George

Новичок
Головоломка. Составление массива из массива

Здравствуйте уважаемые господа программисты :)
Решаю головоломку уже третий день. Решил вам подкинуть. Может кому будет интересно мозг поразмять и мне помочь :)

Суть следующая - есть массив с модулями такого вида:
PHP:
[0]
    [id] = 1
    [subid] = 0
[1]
    [id] = 2
    [subid] = 1
[2]
    [id] = 3
    [subid] = 1
[3]
    [id] = 10
    [subid] = 11
и т.д. , как на картинке.

вы наверняка уже догадываетесь, что должно получится в итоге - многомерный, сложный массив.
если у какого-то модуля существует подмодуль -> значит создать в этом моделе массив modules и помещать туда эти подмодули и т.д.

вот, на чем я остановился.. ))

PHP:
function do_modules_array($modules_db)
	{
    $result_modules_array = Array();

	for($i=0; $i < count($modules_db); $i++) // перебирает основные модули
		{
		$result_modules_array[$i] = $modules_db[$i]; // добавил в массив основной модуль

		for($n = $i+1; $n < count($modules_db); $n++)  // перебираю оставшиейся
			{
			if($modules_db[$n]['submodule'] == $result_modules_array[$i]['id']) // если совпадает - перенести в подмодуль
				{
				$result_modules_array[$i]['modules'][] = $modules_db[$n];
				}
			}
		}
	return $result_modules_array;
	}
собственно искать ответ на конкретные такие задачки тяжеловато, если кому встречалось решение - ой как я буду благодарен.. :)
предчувствие у меня - тут рекурсией попахивает...
 

BRat

o_0
не, не надо рекурсий. Массив оставь двумерный, а элементы связывай при помощи ссылок. Один проход
Ключами массива сделай айдишники
 

George

Новичок
ммм.. спасиб большое, я не знал, как это называется :).. чайник )..

тогда еще вопрос - я смогу потом этот массив в smarty передать?

массив хранится в БД, это меню сайта. модули.
 
Сверху