如何将一组对象解析为PHP中的主/子菜单?

时间:2017-01-20 04:01:07

标签: php arrays object

我正在创建一个动态菜单系统,但是我遇到了一个小问题。我有一个输入方法,允许创建主菜单项和子菜单,然后当PHP收到数组时,我从中构建一组对象。

但是,为了正确填充菜单,我需要获取对象列表并创建一个正确排序的列表,包含主对象和子对象。每个对象都有一个它所属的父ID和ID。如果它属于零,则为最高级别。

$CountFields = count($_POST["URLLabel"]);

$MenuObjectArray = [];

for ($i = 0; $i < $CountFields; $i++)
{
    $obj = new stdClass();
    $obj->URL_ID = $_POST["URL_ID"][$i];
    $obj->URLLabel = $_POST["URLLabel"][$i];
    $obj->URLLink = $_POST["URLLink"][$i];
    $obj->URLParent = $_POST["URLParent"][$i];
    array_push($MenuObjectArray, $obj);
}

将此数组对象输出到ul / li列表中的最佳方法是什么?将子菜单从主要级别考虑在内?

3 个答案:

答案 0 :(得分:0)

使用foreach迭代对象数组。

foreach($MenuObjectArray as $obj)
{
    echo '<li>'.$obj->URL_ID.'</li>'
}

答案 1 :(得分:0)

尝试使用foreach循环:

<?php
foreach($MenuObjectArray as $obj) {
?>
    <ul>
        <li><?php echo $obj->URL_ID?></li>
        <li><?php echo $obj->URLLabel ?></li>
        <li><?php echo $obj->URLLink ?></li>
        <li><?php echo $obj->URLParent ?></li>  
    </ul>
<?php
}
?>

答案 2 :(得分:0)

我决定不再幻想并建立一个临时的SQL数据库,以及一个常规的单一菜单输入字段,而不是一个完整的动态表。这将使整个过程变得更加容易,至少现在,我可以将存储转换为最终类型。特征是最好的。