PHP infinite hierarchical data implementation program code_PHP tutorial
WBOYOriginal
2016-07-13 16:56:501142browse
Let’s introduce to you some usage of unlimited classification in PHP, including direct unlimited classification database and array operations. Friends in need can refer to it.
Let’s first look at the infinite classification of php and mysql databases
Create database:
id, fid, fname (both id and fid must be numeric types and the default value of fid must be set to 0;
The code is as follows
Copy code
代码如下
复制代码
$stime=microtime();
$db=@mysql_connect("localhost","root","micronsky.net") or die("数据库连接失入");
mysql_select_db("temp",$db);
//定义第一级分类
function mainfl()
{
global $db;
$result=mysql_query("select id,fid,fname from wxjfl where fid=0 order by id desc",$db);
if ($myrow=mysql_fetch_array($result)) {
do {
echo $myrow["fname"];
echo " ";
echo subfl($myrow["id"]," "); //此处调用子级分类函数
}
while ($myrow=mysql_fetch_array($result));
}
}
//定义子级分类
function subfl($fid,$strdis)
{
global $db;
$result1=mysql_query("select id,fid,fname from wxjfl where fid=$fid order by id desc",$db);
if ($myrow1=mysql_fetch_array($result1)) {
do {
//echo $strdis;
echo $strdis.$myrow1["fname"];
echo " ";
subfl($myrow1["id"]," ".$strdis); //这里一定要注意并不需要像上面那个函数那样echo ...只要直接调用子级分类函数并付值就行了!同时这里也是递归部分
}
while ($myrow1=mysql_fetch_array($result1));
}
}
mysql_select_db("temp",$db);
//Define the first level classification
function mainfl()
{
global $db;
$result=mysql_query("select id,fid,fname from wxjfl where fid=0 order by id desc",$db);
if ($myrow=mysql_fetch_array($result)) {
do {
echo $myrow["fname"];
echo " ";
echo subfl($myrow["id"]," "); //Call the sub-level classification function here
}
while ($myrow=mysql_fetch_array($result));
}
}
//Define sub-categories
function subfl($fid,$strdis)
{
global $db;
$result1=mysql_query("select id,fid,fname from wxjfl where fid=$fid order by id desc",$db);
if ($myrow1=mysql_fetch_array($result1)) {
do {
//echo $strdis;
echo $strdis.$myrow1["fname"];
echo " ";
Subfl($myrow1["id"]," ".$strdis); //Be sure to note here that there is no need to echo like the function above...just call the sub-level classification function directly and pay the value! At the same time, this is also the recursive part
}
while ($myrow1=mysql_fetch_array($result1));
}
}
echo mainfl();
$ltime=microtime();
echo " ";
echo number_format($ltime-$stime,4); //Statistical execution time, this is much faster than ASP, but this has little to do with the writing method, mainly because PHP itself has added an accelerator!
?>
Now we directly use arrays for paging
The code is as follows
Copy code
/**
* Create a tree array of parent nodes
* Parameter
* $ar array, data organized in adjacency list
* $id is the subscript or associated key name as the primary key in the array
* $pid is the subscript or associated key name as the parent key in the array
* Return multidimensional array
**/
function find_parent($ar, $id='id', $pid='pid') {
foreach($ar as $v) $t[$v[$id]] = $v;
foreach ($t as $k => $item){
If( $item[$pid] ){
If( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) )
$t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]];
$t[$k]['reference'] = true;
}
}
Return $t;
}
/**
* Create a tree array of child nodes
* Parameter
* $ar array, data organized in adjacency list
* $id is the subscript or associated key name as the primary key in the array
* $pid is the subscript or associated key name as the parent key in the array
* Return multidimensional array
**/
function find_child($ar, $id='id', $pid='pid') {
foreach($ar as $v) $t[$v[$id]] = $v;
foreach ($t as $k => $item){
If( $item[$pid] ) {
$t[$item[$pid]]['child'][$item[$id]] =& $t[$k];
$t[$k]['reference'] = true;
}
}
return $t;
}
The above two methods are to flatten all nodes into an array by ID, then find their parent or children, and attach the flat elements to parent and children by reference,
But the referenced elements still exist in the flat array. Therefore, in practical applications, it is best to mark those referenced elements to avoid starting the traversal with them as the root, resulting in duplication.
Recursive method, after the PHP array element is deleted, the array cursor will return to zero, so some elements that have found their "home" during the traversal process have to stay in the array, and the search range for subsequent elements cannot be reduced:
truehttp: //www.bkjia.com/PHPjc/631571.htmlTechArticle Let’s introduce to you some usage of unlimited classification in php, including direct unlimited classification database For operations with arrays, friends in need can refer to it. Let’s take a look first...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn