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;
}
}
复制代码
14. Briefly describe the implementation principle of unlimited classification in the forum.
answer:
/*
The data table structure is as follows: CREATE TABLE `category` ( `categoryID` smallint(5) unsigned NOT NULL auto_increment, `categoryParentID` smallint( 5) unsigned NOT NULL default '0′, `categoryName` varchar(50) NOT NULL default ”, PRIMARY KEY (`categoryID`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
(0, 'First-level category'),
(1, 'Second-level category'), (1, 'Second-level category'), (1, 'Second-level category'), (2, 'Third-level category'), (2, '333332'), (2, '234234'), (3, 'aqqqqqd'), ( 4, 'Haha'), (5, '66333666′);
*/
//Specify the category id variable $category_id, and then return the All subcategories of the category
//$default_category is the default selected category
function Get_Category($category_id = 0,$level = 0, $default_category = 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]] = array('id' => $rows[categoryID], 'parent' => $rows[categoryParentID], 'name' => $rows
< p>[categoryName]);
}
if (!isset($category_array[$category_id]))
{
return “”;
}
foreach($category_array[$category_id] AS $key => $category)
{
if ($category['id'] == $default_category)
{
echo "
}else
{
echo "< ;option value=”.$category['id'].””;
}
if ($level > 0)
{
echo “>” . str_repeat( ” “ , $level ) . ” ” . $category['name'] . “n”;
}
else
{
echo “>” . $category['name'] . “n”;
}
Get_Category( $key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}
/*
The array format returned by the function is as follows:
Array
(
[1] => Array ( [id] => 1 [name] => Level 1 category [level] => 0 [ParentID] => 0 )
[4] => Array ( [id] => 4 [name] => Secondary category [level] => 1 [ParentID] => 1 )
[9] => Array ( [id] => 9 [ name] => haha [level] => 2 [ParentID] => 4 )
[3] => Array ( [id] => 3 [name] => Secondary category [level] = > 1 [ParentID] => 1 )
[8] => Array ( [id] => 8 [name] => aqqqqqd [level] => 2 [ParentID] => 3 )
[2] => Array ( [id] => 2 [name] => Secondary category [level] => 1 [ParentID] => 1 )
[7] => Array ( [id ] => 7 [name] => 234234 [level] => 2 [ParentID] => 2 )
[6] => Array ( [id] => 6 [name] => 333332 [level] => 2 [ParentID] => 2 )
[5] => Array ( [id] => 5 [name] => Third-level category [level] => 2 [ParentID] => 2 )
[10] => Array ( [id] => 10 [name] => 66333666 [level] => 3 [ParentID] => 5 )
)
*/
/ /Specify the category id, and then return the array
function 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;
}
?>
Copy code
class cate
{
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, ‘parent’ => 0, ‘name’ => ’2222′),
’4′ => array(‘id’ => 4, ‘parent’ => 0, ‘name’ => ’4444′)
),
’1′ => array(
’3′ => array(‘id’ => 3, ‘parent’ => 1, ‘name’ => ’333333′),
’5′ => array(‘id’ => 5, ‘parent’ => 1, ‘name’ => ’555555′)
),
’3′ => array(
’6′ => array(‘id’ => 6, ‘parent’ => 3, ‘name’ => ’66666′),
’7′ => array(‘id’ => 7, ‘parent’ => 3, ‘name’ => ’77777′)
),
’4′ => array(
’8′ => array(‘id’ => 8, ‘parent’ => 4, ‘name’ => ’8888′),
’9′ => array(‘id’ => 9, ‘parent’ => 4, ‘name’ => ’9999′)
)
);
if (!isset($arr[$category_id]))
{
return “”;
}
foreach($arr[$category_id] AS $key => $cate)
{
if ($cate['id'] == $default_category)
{
$txt = “
}else{
$txt = “
}
if ($level > 0)
{
$txt1 = “>” . str_repeat( “-”, $level ) . ” ” . $cate['name'] . “n”;
}else{
$txt1 = “>” . $cate['name'] . “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 “”;
?>
复制代码