PHP recursively traverses multi-dimensional arrays to implement unlimited classification.
This example describes how PHP recursively traverses multi-dimensional arrays to implement unlimited classification. We will share this with you for your reference. The details are as follows:
<? Php // $ data [] = array ('id' => 1, 'parentid' => 0, 'name' => 'China ', 'img '=> '000000'); $ data [] = array ('id' => 1, 'parentid' => 0, 'name' => 'China'); $ data [] = array ('id' => 2, 'parentid' => 0, 'name' => 'u.s. '); $ data [] = array ('id' => 3, 'parentid' => 0, 'name' => 'korea '); $ data [] = array ('id' => 4, 'parentid' => 1, 'name' => 'beijing'); $ data [] = array ('id' => 5, 'parentid' => 1, 'name' => 'shanghai'); $ data [] = array ('id' => 6, 'parentid' => 1, 'name' => 'guangxi '); $ data [] = array ('id' => 7, 'parentid' => 6, 'name' => 'guilin '); $ data [] = array ('id' => 8, 'parentid' => 6, 'name' => 'nanning '); $ data [] = array ('id' => 9, 'parentid' => 6, 'name' => 'liuzhou '); $ data [] = array ('id' => 10, 'parentid' => 2, 'name' => 'newyork '); $ data [] = array ('id' => 11, 'parentid' => 2, 'name' => 'Washington '); $ data [] = array ('id' => 12, 'parentid' => 3, 'name' => 'seoul '); $ tree = build_tree ($ data, 0); // echo memory_get_usage (); print_r ($ tree ); function findChild (& $ arr, $ id) {$ childs = Rray (); foreach ($ arr as $ k => $ v) {if ($ v ['parentid'] = $ id) {$ childs [] = $ v ;}return $ childs;} function build_tree ($ rows, $ root_id) {$ childs = findChild ($ rows, $ root_id ); if (empty ($ childs) {return null;} foreach ($ childs as $ k => $ v) {$ rescurTree = build_tree ($ rows, $ v ['id']); if (null! = $ RescurTree) {$ childs [$ k] ['childs '] = $ rescurTree;} return $ childs ;}?>
Running result:
Array ([0] => Array ([id] => 1 [parentid] => 0 [name] => China [childs] => Array ([0] => Array ([id] => 4 [parentid] => 1 [name] => Beijing) [1] => Array ([id] => 5 [parentid] => 1 [name] => Shanghai) [2] => Array ([id] => 6 [parentid] => 1 [name] => Guangxi [childs] => Array ([0] => Array ([ id] => 7 [parentid] => 6 [name] => Guilin) [1] => Array ([id] => 8 [parentid] => 6 [name] => Nanning) [2] => Array ([id] => 9 [parentid] => 6 [name] => Liuzhou ))))) [1] => Array ([id] => 2 [parentid] => 0 [name] => us [childs] => Array ([0] => Array ([ id] => 10 [parentid] => 2 [name] => New York) [1] => Array ([id] => 11 [parentid] => 2 [name] => Washington ))) [2] => Array ([id] => 3 [parentid] => 0 [name] => KOREA [childs] => Array ([0] => Array ([ id] => 12 [parentid] => 3 [name] => Seoul ))))