PHP/MySQL 中的类别层次结构
处理分层数据(例如类别)时,以结构化方式表示它们至关重要。一种常见的方法是使用邻接列表模型,其中每一行代表一个类别,并有一个字段指示其父类别。
获取层次结构
使用 PHP,您可以可以从 MySQL 检索类别数据并一次性构建层次结构。下面的代码受到 Nate Weiner 的“One Pass Parent-Child Array Structure”的启发:
<code class="php">$refs = []; $list = []; $sql = "SELECT category_id, parent_id, category_name FROM categories ORDER BY category_name"; foreach ($result as $row) { $ref = &$refs[$row['category_id']]; $ref['parent_id'] = $row['parent_id']; $ref['category_name'] = $row['category_name']; if ($row['parent_id'] == 0) { $list[$row['category_id']] = &$ref; } else { $refs[$row['parent_id']]['children'][$row['category_id']] = &$ref; } }</code>
此循环填充两个数组:$refs 包含对每个类别的引用,而 $list 包含顶级类别(没有父级)。
创建层次结构表示
要创建层次结构的可视表示,您可以使用递归函数生成嵌套 HTML 列表。考虑以下代码:
<code class="php">function toUL(array $array) { $html = '<ul>' . PHP_EOL; foreach ($array as $value) { $html .= '<li>' . $value['category_name']; if (!empty($value['children'])) { $html .= toUL($value['children']); } $html .= '</li>' . PHP_EOL; } $html .= '</ul>' . PHP_EOL; return $html; }</code>
此函数采用类别数组作为输入,并递归地构建嵌套的 HTML 列表。然后可以输出生成的 HTML 以显示类别层次结构。
以上是如何在 PHP/MySQL 中可视化分层数据(类别)?的详细内容。更多信息请关注PHP中文网其他相关文章!