php – 如何递归构建具有未知树深度的
发布时间:2020-12-13 13:52:14 所属栏目:PHP教程 来源:网络整理
导读:我有一个带有树数据结构的 MySQL表.字段是_id,name和parentId.当记录没有父级时,parentId默认为0.这样我就可以构建一个数组,然后递归打印每条记录. 构建的数组如下所示: Array( [1] = Array ( [parentId] = 0 [name] = Countries [_id] = 1 [children] = Ar
我有一个带有树数据结构的
MySQL表.字段是_id,name和parentId.当记录没有父级时,parentId默认为0.这样我就可以构建一个数组,然后递归打印每条记录.
构建的数组如下所示: Array ( [1] => Array ( [parentId] => 0 [name] => Countries [_id] => 1 [children] => Array ( [2] => Array ( [parentId] => 1 [name] => America [_id] => 2 [children] => Array ( [3] => Array ( [parentId] => 2 [name] => Canada [_id] => 3 [children] => Array ( [4] => Array ( [parentId] => 3 [name] => Ottawa [_id] => 4 ) ) ) ) ) [5] => Array ( [parentId] => 1 [name] => Asia [_id] => 5 ) [6] => Array ( [parentId] => 1 [name] => Europe [_id] => 6 [children] => Array ( [7] => Array ( [parentId] => 6 [name] => Italy [_id] => 7 ) [11] => Array ( [parentId] => 6 [name] => Germany [_id] => 11 ) [12] => Array ( [parentId] => 6 [name] => France [_id] => 12 ) ) ) [8] => Array ( [parentId] => 1 [name] => Oceania [_id] => 8 ) ) ) ) 打印无序列表< ul>递归非常简单.这是我使用的功能: function toUL ($arr) { $html = '<ul>' . PHP_EOL; foreach ( $arr as $v ) { $html.= '<li>' . $v['name'] . '</li>' . PHP_EOL; if ( array_key_exists('children',$v) ) { $html.= toUL($v['children']); } } $html.= '</ul>' . PHP_EOL; return $html; } 但我坚持打印一个< select>以树形结构的方式: Countries -- America ---- Canada ------ Ottawa -- Asia -- Europe ---- Italy ---- Germany ---- France -- Oceania 我想要打印 – 与元素的深度一样多次,但我不知道如何计算深度. 我的问题是:是否可以构建一个< select>不知道深度? 先谢谢你.
传递一个参数来计算迭代次数,如$pass
function toUL ($arr,$pass = 0) { $html = '<ul>' . PHP_EOL; foreach ( $arr as $v ) { $html.= '<li>'; $html .= str_repeat("--",$pass); // use the $pass value to create the -- $html .= $v['name'] . '</li>' . PHP_EOL; if ( array_key_exists('children',$v) ) { $html.= toUL($v['children'],$pass+1); } } $html.= '</ul>' . PHP_EOL; return $html; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |