制作HTML类别列表(PHP)

时间:2011-12-22 06:45:42

标签: php mysql html categories

我有一个名为Category的表,遵循以下模式:

id |名字| PARENT_ID

因此,如果类别x是y的子元素,则x的parent_id是y的id。

我还有一个函数返回一个包含每行所有列的数组。

它的返回格式为:

returned_array [category_id1] = array([category_name],[category_parent_id] returned_array [category_id2] = array([category_name],[category_parent_id]

等......负责将所有类别提取到一个数组中。

现在我想编写一个将返回

的函数
<li>Category 1
    <li>Child 1</li>
    <li>Child 2
     <li>Child x</li>
    </li>
</li>
<li>Category 2
    <li>Child 1</li>
    // etc
</li>

我在这方面打破了我的头脑,但我不知道如何做到这一点......

2 个答案:

答案 0 :(得分:0)

试试这个。如果有错误,我没有测试它,但这个想法就在这里

<?php

$aCats = array(
    1 = array(
        'name'=>'Category 1',
        'childs'=> array(
            2 = array(
                'name'=>'Category 1 - A',
                'childs'=> array();
            );  
        );
    );
);

function printParentChild($aCats)
{
    $sHtml = '';

    foreach($aCats as $aCat)
    {
        if(array_key_exists('childs', $aCat) && is_array($aCat['childs']) )
            $sHtml .= printParentChild($aCat['childs']);

        $sHtml .= '<li>'.$aCat.'</li>';
    }
    return '<ul>'.$sHtml.'</ul>';
}

echo $aCats;

答案 1 :(得分:-1)

在这种情况下,你需要2个数组来轻松处理它而没有复杂的,第一个数组应该包含所有的类别,例如)

$catArr[categoryId] =  'categoryName';

你的第二个数组应该只有父ID作为键,子数组作为值,例如

$subCatArr[parentId] = Array([0]=>firstChildId, [1]=> secondChildId ..etc)
$subCatArr[parentId] = Array([0]=>firstChildId, [1]=> secondChildId ..etc)

现在你可以循环遍历你的$ subCatArr数组了,还有一个循环来获取子节点并从$ catArr数组中获取类别的名称。

你可以使用这种方法,这种方法使用得很多,也很容易,

首先运行查询以获取categoryname和不同的父Id并循环遍历它并在循环内运行另一个查询以获取所有具有父Id作为当前循环id的记录。