PHP递归函数问题

时间:2018-09-19 09:24:43

标签: php

我在使用PHP的递归函数时遇到了一些麻烦。我正在创建一个函数,该函数创建基于数据库类别的链接。该表将使用“ parent_id”作为无限级别创建,以检查该类别的父ID。

我还包括了创建链接的“ category_link”字段。 我的问题在于使用递归函数创建链接系统。

例如,我具有以下类别: 汽车(ID 1)(链接/汽车) -沃尔沃(ID 2)(链接/ volvo) -奥迪(ID 3)(链接/ audi)

因此,如果我构建一个函数来创建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的类别。 我为此感到头痛。你能帮我么?谢谢!

0 个答案:

没有答案