在 MySQL 数据库中,您可以将层次结构数据存储在名为categories 的表中,其中包含category_id 和parent_id 列。要使用 PHP 以分层结构检索此数据,请按照以下步骤操作:
从数据库中获取数据:
使用 SQL 查询获取按名称排序的所有类别:
<code class="php">$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name"; $result = $pdo->query($sql);</code>
创建引用数组:
创建一个关联数组 $refs 来存储对每个类别。每个引用将包含parent_id 和name 属性。对于没有父级的类别 (parent_id = 0),将它们添加到 $list 数组中。
<code class="php">$refs = array(); $list = array(); foreach ($result as $row) { $ref = &$refs[$row['category_id']]; $ref['parent_id'] = $row['parent_id']; $ref['name'] = $row['name']; if ($row['parent_id'] == 0) { $list[$row['category_id']] = &$ref; } else { $refs[$row['parent_id']]['children'][$row['category_id']] = &$ref; } }</code>
生成嵌套 HTML 列表:
创建递归函数 toUL 以使用 $list 数组生成嵌套 HTML 列表。它应该检查子树并递归调用自身来构建子树。
<code class="php">function toUL(array $array) { $html = '<ul>' . PHP_EOL; foreach ($array as $value) { $html .= '<li>' . $value['name']; if (!empty($value['children'])) { $html .= toUL($value['children']); } $html .= '</li>' . PHP_EOL; } $html .= '</ul>' . PHP_EOL; return $html; }</code>
显示层次结构:
使用 toUL 函数生成并显示分层 HTML 列表。
您可以在参考资料中提供的“相关问题”部分中找到有关从对象的数组记录集中获取嵌套 HTML 列表的有用示例。
以上是如何在 PHP 中以嵌套 HTML 形式从 MySQL 数据库检索分层数据?的详细内容。更多信息请关注PHP中文网其他相关文章!