function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != “..” && $file != “.” ) {
if ( is_dir ($dir . “/” . $file) ) {
$files[$file] = scandir($dir . “/” . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
复system代码
14. 포럼에서 무한 분류의 구현 원리를 간략하게 설명하세요.
답변:
/*
데이터 테이블 구조는 다음과 같습니다. CREATE TABLE `category` ( `categoryID` smallint(5) unsigned NOT NULL auto_increment, `categoryParentID` smallint(5) unsigned NOT NULL 기본값 '0′, `categoryName` varchar(50) NOT NULL 기본값 ”, PRIMARY KEY (`categoryID`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES
(0, '1차 카테고리'),
(1, '2차 카테고리'),
(1, '2차 카테고리'),
(1, ' 2차 분류'),
(2, '3차 분류'),
(2, '333332′),
(2, '234234′),
(3, ' aqqqqqd'),
( 4, '하하'),
(5, '66333666′);
*/
< p>//분류 ID 변수 $category_id를 지정한 다음 카테고리의 모든 하위 카테고리를 반환합니다
//$default_category는 기본적으로 선택된 카테고리입니다
function Get_Category($category_id = 0, $level = 0, $default_category = 0)
{
전역 $DB;
$sql = “SELECT * FROM 카테고리 ORDER BY 카테고리 ID DESC”;
$result = $DB->query( $sql );
while ($rows = $DB ->fetch_array($result))
{
$category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $ 행[categoryID], '부모' => $rows[categoryParentID], 'name' => $rows
[categoryName]);
}
if ( !isset($category_array[$category_id ]))
{
return “”;
}
foreach($category_array[$category_id] AS $key => $category)
{
if ($category[ 'id'] == $default_category)
{
echo "
}else
{
echo "
}
if ($level > 0 )
{
echo “>” . str_repeat( ” “, $level ) . ” . $category['name'] .
}
else
echo “>” . $category['name'] . "n";
}
Get_Category($key, $level 1, $default_category);
}
unset( $category_array[$category_id]);
}
/*
함수가 반환하는 배열 형식은 다음과 같습니다.
Array
(
[1] => 배열( [ id] => 1 [name] => 첫 번째 수준 카테고리 [level] => 0 [ParentID] => 0 )
[4] => ( [id] => 4 [name ] => 보조 카테고리 [level] => 1 [ParentID] => 1 )
[9] => 배열 ( [id] => 9 [ 이름] => 하하 [레벨] => 2 [상위 ID] => 4 )
[3] => 배열 ( [id] => 3 [이름] => 보조 카테고리 [레벨] => 1 [상위 ID] = > 1 )
[8] => 배열( [id] => 8 [이름] => aqqqqqd [수준] => 2 [상위 ID] => 3 )
[2] => 배열 ( [id] => 2 [name] => 보조 카테고리 [level] => 1 [ParentID] => 1 )
[7] = > 배열( [id] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
[6] => 배열( [id] => 6 [이름] => 333332 [수준] => 2 [상위 ID] => 2 )
[5] => 배열 ( [id] => 5 [이름] => 카테고리 [레벨] => 2 [상위 ID] => 2 )
[10] => 배열 ( [id] => 10 [이름] => 66333666 [레벨] => 3 [상위 ID ] => 5 )
)
*/
//카테고리 ID를 지정한 후 배열을 반환합니다
함수 Category_array($category_id = 0,$level=0)
{
global $DB;
$ sql = “SELECT * FROM Category ORDER BY CategoryID DESC”;
$result = $DB->query($sql);
while($rows = $ DB->fetch_array($result))
{
$category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;
}
foreach ($category_array AS $key=>$val)
{
if ($key == $category_id)
{
foreach($val AS $k => $v)
{
$options[$k] =
array(
'id' => $v['categoryID'], 'name' => $v ['categoryName'], 'level' => ; $level, 'ParentID'=>$v['categoryParentID']
);
$children = Category_array( $k, $level 1); p>
if (count($children) > 0)
{
$options = $options $children;
}
}
}
}
unset($category_array[$category_id]);
return $options;
}
?>
코드 복사
클래스 케이트
{
< ;p>function Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
echo $category_id;
$arr = array(
'0′ => array (
'1′ => array('id' => 1, 'parent' => 0, 'name' => '1111′),
'2′ => array( 'id' => 2, '부모' => '이름' => '2222′),
'4′ => array('id' => 4, '부모' = > 0, '이름' => '4444′)
),
'1′ => array(
'3′ => array('id' => 3, ' parent' => 1, '이름' => '333333′),
'5′ => array('id' => 5, '부모' => 1, '이름' => ; '555555′)
),
'3′ => array(
'6′ => array('id' => 6, ' parent' => 3, '이름' => '66666′),
'7′ => array('id' => 7, '부모' => 3, '이름' => ; '77777′)
),
'4′ => array(
'8′ => array('id' => 8, 'parent' => 4, '이름 ' => '8888′),
'9′ => array('id' => 9, '부모' => 4, '이름' => '9999')
)
);
if (!isset($arr[$category_id]))
{
return “”;
}
foreach($arr[$category_id] AS $key => $cate)
{
if ($cate['id'] == $default_category)
{
$txt = “<옵션 선택 값=”.$cate['id'] .”";
}else{
$txt = “<옵션 값=”.$cate['id'].”";
}
0)
{
$txt1 = “>” . str_repeat( “-”, $level ) . ” ” . $cate['이름'] . “n”;
}else{
$txt1 = “>” . $cate['이름'] . “n”;
}
$val = $txt.$txt1;
echo $val;
self::Get_Category($key, $level 1, $default_category);
}
}
function getFlush($category_id = 0,$level = 0, $default_category = 0)
{
ob_start();
self: :Get_Category($category_id ,$level, $default_category);
$out = ob_get_contents();
ob_end_clean();
return $out;
}
}
$id =$_GET['id'];
echo “”;
$c = new cate();
//$c->Get_Category();
$ttt= $c- >getFlush($id,'0′,'3′);
echo $ttt;
echo “”;
?>
제제대码