функция определения подкатегорий

kelly

Новичок
помогите пожалуйста разобраться как реализовать такую функцию.

есть массив
PHP:
Array
(
    [2] => Array
        (
            [id] => 2
            [parentid] => 11
            [name] => Тексты
        )

    [11] => Array
        (
            [id] => 11
            [parentid] => 0
            [name] => Знание
        )

    [10] => Array
        (
            [id] => 10
            [parentid] => 0
            [name] => Вера
        )
)
где id - это id категории, а parentid - id родительской категории.

нужно в итоге получить массив вида massiv [ i ] - где i количество категорий. Тоесто если парентайди - 0 - то это дочерняя категория.
и в каждую ячейку массива вложить соедененные данные из родительской категории - и N дочерних...

Помогите. подскажите как перебрать массив и составить условия
 

kelly

Новичок
PHP:
function DisplayCategories($parentid = 0, $a=0) {
		global $cat_info, $config;
			static $category;
		
		// start table
	
		if( $parentid == 0 ) {
			$a=0;
		} else {
			$a++;
		}
		
		if( count( $cat_info ) ) {
			foreach ( $cat_info as $cats ) {
				if( $cats['parentid'] == $parentid ) $root_category[] = $cats['id'];
			}
				
			if( count( $root_category ) ) {
				foreach ( $root_category as $id ) {		
					if( $config['allow_alt_url'] == "yes" ) $link = "<li><a class=\"menu\" id=\"".$id."\" href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" >" . stripslashes( $cat_info[$id]['name'] ). "</a></li>";
					else $link = "<li><a class=\"menu\" id=\"".$id."\" href=\"{$config['http_home_url']}index.php?do=cat&category=" . $cat_info[$id]['alt_name'] . "\" >" . stripslashes( $cat_info[$id]['name'] )."</a></li>";
					//создаем предмассив
					$category[$a][$parentid] .= $link;
				
					DisplayCategories( $id, $a );
				}
			}
		}
		
		// end table
		if( $parentid == 0 ) {
			return $category;
			
		}
	}
вот примерно так хотел сделать!
Вопрос! - она работает - но один раз. во второй раз дублируются записи в массиве. а если убрать static - ничего не работает. Помогите
 
Сверху