Home  >  Article  >  Backend Development  >  Sharing Examples of PHP Implementing Infinite Leveling Without Recursion_PHP Tutorial

Sharing Examples of PHP Implementing Infinite Leveling Without Recursion_PHP Tutorial

WBOY
WBOYOriginal
2016-07-13 10:32:11977browse

Two tree array operation functions without recursion

Copy code The code is as follows:

/**
* Create a parent node tree array
* Parameters
* $ar array, data organized in adjacency list
* $id The subscript or associated key name as the primary key in the array
* $pid The subscript or associated key name as the parent key in the array
* Returns a multi-dimensional 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]]; 🎜> return $t;
}


/** * Create a tree array of child nodes

* Parameters
* $ar array, data organized in adjacency list
* $id The subscript or associated key name as the primary key in the array
* $pid The subscript or associated key name as the parent key in the array
* Returns a multi-dimensional 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];
}
}
return $t;
}



Usage example:

Copy code

The code is as follows:$data = array(
array('ID'=>1, 'PARENT'=>0, 'NAME'=>'grandfather'),
array('ID'=>2, 'PARENT'=>1, 'NAME'=>'father') ,
array('ID'=>3, 'PARENT'=>1, 'NAME'=>'Uncle'),
array('ID'=>4, 'PARENT'= >2, 'NAME'=>'self'),
array('ID'=>5, 'PARENT'=>4, 'NAME'=>'son'),
);

$p = find_parent($data, 'ID', 'PARENT');
$c = find_child($data, 'ID', 'PARENT');



Execution effect:


Copy code

The code is as follows:

Array
(
    [1] => Array
        (
            [ID] => 1
            [PARENT] => 0
            [NAME] => 祖父
            [child] => Array
                (
                    [2] => Array
                        (
                            [ID] => 2
                            [PARENT] => 1
                            [NAME] => 父亲
                            [child] => Array
                                (
                                    [4] => Array
                                        (
                                            [ID] => 4
                                            [PARENT] => 2
                                            [NAME] => 自己
                                            [child] => Array
                                                (
                                                    [5] => Array
                                                        (
                                                            [ID] => 5
                                                            [PARENT] => 4
                                                            [NAME] => 儿子
                                                        )

                                                )

                                        )

                                )

                        )

                    [3] => Array
                        (
                            [ID] => 3
                            [PARENT] => 1
                            [NAME] => 叔伯
                        )

                )

        )

    [2] => Array
        (
            [ID] => 2
            [PARENT] => 1
            [NAME] => 父亲
            [child] => Array
                (
                    [4] => Array
                        (
                            [ID] => 4
                            [PARENT] => 2
                            [NAME] => 自己
                            [child] => Array
                                (
[5] => Array
                                                                                                                                         Son )

                                                                      
[3] => Array
(
[ID] => 3
[PARENT] => 1
[NAME] => Uncle
)

[4] => Array
(
[ID] => 4
                                                                                                        ​                                                                                                                                                                                                                                                          Array
     🎜>                                                                                                                       ​ ] => Son
                                                                           
[5] => Array
(
[ID] => 5
[PARENT] => 4
[NAME] => Son
)

)

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/756337.htmlTechArticleTwo tree array operation functions without recursion Copy the code as follows: /** * Create a parent node tree Array* Parameter* $ar array, data organized in adjacency list mode* $id array...
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