Php 如何设置数组输出的样式?

Php 如何设置数组输出的样式?,php,arrays,Php,Arrays,如何设置从该数组返回的数据的样式,以将主类别与子类别分开 这是我用来从数据库中提取数据的代码: function fetchCategoryTree($parent = 0, $spacing = '', $user_tree_array = '') { if (!is_array($user_tree_array)) $user_tree_array = array(); $sql = "SELECT * FROM `prod

如何设置从该数组返回的数据的样式,以将主类别与子类别分开

这是我用来从数据库中提取数据的代码:

function fetchCategoryTree($parent = 0, $spacing = '', $user_tree_array = '') {

        if (!is_array($user_tree_array))
            $user_tree_array = array();

            $sql = "SELECT * FROM `products_category_translate` WHERE `parentID` = $parent AND `language` = 'bg'";
            $query = mysqli_query($sql);

        if (mysqli_num_rows($query) > 0) {
            while ($row = mysqli_fetch_object($query)) {
                $user_tree_array[] = array("id" => $row->id, "uniqueID" => $row->uniqueID, "title" => $spacing . $row->title);
                $user_tree_array = fetchCategoryTree($row->uniqueID, $spacing . '-- ', $user_tree_array);
            }
        }
        return $user_tree_array;
    }
(id, uniqueID, title, language, parentID)
(1, 1, 'cat1', 'en', 0, 0),
(2, 2, 'subcat1', 'en', 0, 1),
用于输出fetchCategoryTree结果的代码:

$categoryList = fetchCategoryTree();
foreach($categoryList as $cl) { 
echo '<a href="'.$g['url'].''.languageURL('0', 'products/'.$cl['uniqueID'].'/'.convertToURL($cl['title']).'.html').'">'.$cl['title'].'</a><br>';
}
我试图提取以下数据:

<li>category
<ul><li>subcategory</li></ul>
</li>



你应该改变它的方法。首先,您需要创建一个多维数组,该数组应该包含子数组中的子数组。 所以在这种情况下,您可以在循环中运行循环,以递归列表元素的形式打印它。
这将解决您的问题。

当您分配给$user\u tree\u数组时,代码中存在问题或复杂问题。 下面的代码试图解决这个问题,但决不是完美的

function fetchCategoryTree($parent = 0, $spacing = '', $depth = 0) {

    $user_tree_array = array();

    $sql = "SELECT * FROM `products_category_translate` WHERE `parentID` = $parent AND `language` = 'bg'";
    $query = mysqli_query($sql);

    if (mysqli_num_rows($query) > 0) {
        while ($row = mysqli_fetch_object($query)) {
            $child = array("id" => $row->id, "uniqueID" => $row->uniqueID, "title" => $spacing . $row->title, "depth"=>$depth, "sub_categories" => array());
            $child ["sub_categories"] = fetchCategoryTree($row->uniqueID, $spacing . '-- ', $depth+1);
            $user_tree_array[] = $child;
        }
    }
    return $user_tree_array;
}

function print_recursive($categoryList) {
    if(empty($categoryList)) {
        return;
    }
    echo "<ul>";
    foreach($categoryList as $cl) { 
        echo "<li>";
        echo '<a href="'.$g['url'].''.languageURL('0', 'products/'.$cl['uniqueID'].'/'.convertToURL($cl['title']).'.html').'">'.$cl['title'].'</a>';
        print_recursive($cl["sub_categories"]]; 
        echo "</li>";
    }
    echo "</ul>";
}   

$categoryList = fetchCategoryTree();
print_recursive($categoryList);

@B001ᛦ 嗨,我已经更新了我的帖子。我希望现在我想要达到的目标已经很清楚了。简而言之:树形结构是解决问题的最好方法,但答案应该包含更多的解释——也许可以添加示例或至少是伪代码来解释这个问题谢谢!使用这种方法,我只能识别主要类别。如何将子类别也列为列表样式?我添加了depth参数来帮助实现这一点。让我编辑我的代码来演示如何递归处理数组。谢谢!这肯定会对我有帮助