This article mainly introduces two examples of infinite classification methods in php. This article provides examples of infinite classification implemented by recursive and non-recursive methods. For more information, see
1. recursive methods
The code is as follows:
$ Items = array (
Array ('id' => 1, 'pid '=> 0, 'name' => 'Level 1 11 '),
Array ('id' => 2, 'pid '=> 0, 'name' => 'Level 1 12 '),
Array ('id' => 3, 'pid '=> 1, 'name' => 'Level 2 21 '),
Array ('id' => 4, 'pid '=> 3, 'name' => 'third-level 31 '),
Array ('id' => 5, 'pid '=> 1, 'name' => 'Level 2 22 '),
Array ('id' => 6, 'pid '=> 3, 'name' => 'Level 3 32 '),
Array ('id' => 7, 'pid '=> 6, 'name' => 'level 4 41 '),
);
$ I = 0;
Function formatTree ($ arr, $ pid = 0 ){
$ Tree = array ();
$ Temp = array ();
Global $ I;
If ($ arr ){
Foreach ($ arr as $ k =>$ v ){
If ($ v ['pid '] ==$ pid ){//
$ Temp = formatTree ($ arr, $ v ['id']);
$ Temp & $ v ['son'] = $ temp;
$ Tree [] = $ v;
}
}
}
Return $ tree;
}
Print_r (formatTree ($ items ));
II. non-recursive method
The code is as follows:
Function genTree ($ items ){
$ Tree = array (); // formatted tree
Foreach ($ items as $ item)
If (isset ($ items [$ item ['pid ']) {
$ Items [$ item ['pid '] ['son'] [] = & $ items [$ item ['id'];
}
Else {
$ Tree [] = & $ items [$ item ['id'];
}
Return $ tree;
}
$ Items = array (
1 => array ('id' => 1, 'pid '=> 0, 'name' => 'Level 1 11 '),
2 => array ('id' => 2, 'pid '=> 1, 'name' => 'Level 2 21 '),
3 => array ('id' => 3, 'pid '=> 1, 'name' => 'Level 2 23 '),
4 => array ('id' => 4, 'pid '=> 9, 'name' => 'third-level 31 '),
5 => array ('id' => 5, 'pid '=> 4, 'name' => 'level 4 43 '),
6 => array ('id' => 6, 'pid '=> 9, 'name' => 'Level 3 32 '),
7 => array ('id' => 7, 'pid '=> 4, 'name' => '4's 41 '),
8 => array ('id' => 8, 'pid '=> 4, 'name' => '4 '),
9 => array ('id' => 9, 'pid '=> 1, 'name' => 'Level 2 25 '),
10 => array ('id' => 10, 'pid '=> 11, 'name' => 'Level 2 22 '),
11 => array ('id' => 11, 'pid '=> 0, 'name' => 'Level 1 12 '),
12 => array ('id' => 12, 'pid '=> 11, 'name' => 'second-level 24 '),
13 => array ('id' => 13, 'pid '=> 4, 'name' => 'level 4 44 '),
14 => array ('id' => 14, 'pid '=> 1, 'name' => 'second 26 '),
15 => array ('id' => 15, 'pid '=> 8, 'name' => 'Level 5 51 '),
16 => array ('id' => 16, 'pid '=> 8, 'name' => 'Level 5 52 '),
17 => array ('id' => 17, 'pid '=> 8, 'name' => 'five levels 53 '),
18 => array ('id' => 18, 'pid '=> 16, 'name' => 'six 64 '),
);
Print_r (genTree ($ items ));