php - 递归函数的PHP问题
问题描述
我在 PHP 中的递归函数遇到了一些问题。我正在创建一个基于数据库中的类别创建链接的函数。该表被创建为具有“parent_id”的无限级别,以检查该类别的父 ID 是什么。
我还包括一个创建链接的字段“category_link”。我的问题在于创建具有递归函数的链接系统。
例如我有类别:汽车(ID 1)(链接/汽车)-沃尔沃(ID 2)(链接/沃尔沃)-奥迪(ID 3)(链接/奥迪)
因此,如果我构建一个函数来为 ID2 创建链接,则最终链接应该是 /cars/volvo。我的功能只是检索最后一个, /volvo 而不是 /cars/volvo
function GetSlug($mysqli)
{
if (isset($_POST)) {
$cat = validar($mysqli, $_POST['card_category']);
if ($stmt = $mysqli->prepare("SELECT * FROM categories WHERE id = ? LIMIT 1")) {
$stmt->bind_param("i", $cat);
$stmt->execute() or trigger_error($stmt->error, E_USER_ERROR);
($stmt_result = $stmt->get_result()) or trigger_error($stmt->error, E_USER_ERROR);
if ($stmt_result->num_rows > 0) {
$category = array(
'categories' => array(),
'parent_cats' => array()
);
while ($row_data = $stmt_result->fetch_assoc()) {
$parent = $row_data['parent_id'];
//creates entry into categories array with current category id ie. $categories['categories'][1]
$category['categories'][$row_data['id']] = $row_data;
//creates entry into parent_cats array. parent_cats array contains a list of all categories with children
$category['parent_cats'][$row_data['parent_id']][] = $row_data['id'];
}
echo buildcat($parent, $category);
} else {
return false;
}
}
}
}
第二个功能:
function buildcat($parent, $category)
{
$html = "";
if (isset($category['parent_cats'][$parent])) {
foreach ($category['parent_cats'][$parent] as $cat_id) {
if (!isset($category['parent_cats'][$cat_id])) {
$html .= $category['categories'][$cat_id]['category_link'] . "<br/>";
}
if (isset($category['parent_cats'][$cat_id])) {
$html .= $category['categories'][$cat_id]['category_link'];
$html .= buildcat($cat_id, $category);
}
}
}
return $html;
}
我想我的问题是因为我只从数据库中获取所选类别 ID 的信息,而不是获取所有具有属于该类别的 parent_id 的类别。我为此头疼。你能帮我么?谢谢!
解决方案
推荐阅读
- arm - VMSS 的 Keyvault 扩展
- android - 发现:组合多个“-exec”语句不适用于 toybox / Android?
- networking - STM32F4x以太网MAC DMA状态寄存器中的“Early Transmit Interrupt”是什么?
- excel - 有没有办法通过 VBA 中的 winapi 覆盖光标行为?
- java - 使用嵌套列表进行分组和求和
- mysql - MySQL/VB.NET(Winform) - 如何正确使用@var?
- ios - 可以以编程方式点击文本字段并粘贴用户名/密码吗?登录未保存在钥匙串中
- c# - 为什么 C# WPF 按钮绑定命令在使用简单注入器后不会改变视图?
- powershell - 如何在 Powershell 中分配和引用包含方括号的环境变量
- amazon-web-services - 数据删除如何计入 AWS RDS 定价?