duanchuonong5370 2012-09-08 03:27
浏览 44
已采纳

从fetch Array创建无限的ul li标签(用于列表)[关闭]

I'm going to make a unlimited list use li and ul tags from my Array results of PDO(fetched)

my Array :

Array ( 
 [0] => Array ( [category_label] => catLevel4 [category_id] => 22 [category_owner] => 21 ) 
 [1] => Array ( [category_label] => catLevel3 [category_id] => 21 [category_owner] => 20 ) 
 [2] => Array ( [category_label] => catLevel2 [category_id] => 23 [category_owner] => 8 ) 
 [3] => Array ( [category_label] => catLevel2 [category_id] => 24 [category_owner] => 8 ) 
 [4] => Array ( [category_label] => catLevel2 [category_id] => 20 [category_owner] => 6 ) 
 [5] => Array ( [category_label] => catLevel1 [category_id] => 6 [category_owner] => 0 ) 
 [6] => Array ( [category_label] => catLevel1 [category_id] => 7 [category_owner] => 0 ) 
 [7] => Array ( [category_label] => catLevel1 [category_id] => 8 [category_owner] => 0 )
 )

i want :

catLevel1
 catLevel2
  catLevel3
   catLevel4
catLevel1
catLevel1
 catLevel2
 catLevel2

i made a function for convert :

function getCategory($parentCategoryId,$data)
{
    foreach($data as $row){if($row['category_owner']==$parentCategoryId){?>
    <li catId='<?php echo $row['category_id']?>'><a><?php echo $row['category_label'];?></a>
            <ul> 
            <?php getCategory($row['category_id'],$data) ;?>
            </ul>
    </li>
    <?php };}
}

echo getCategory(0,$this->categorysList);

this function is very good working for me , But create null <ul></ul> for all items !

I appreciate your help to build a standard function ;D

  • 写回答

1条回答 默认 最新

  • doxp30826 2012-09-08 11:40
    关注

    You get null <ul> tags, because you hardcode it without any checks, and output in every iteration. Try something like this:

    <?php
    
    function getCategory($parentCategoryId, $data) {
        foreach ($data as $row) {
            if ($row['category_owner'] == $parentCategoryId) {
                $str .= '
    <li catId="' . $row['category_id'] . '"><a>' . $row['category_label'] . '</a>' . "
    ";
                $res = getCategory($row['category_id'], $data);
                if ($res) {
                    $str .= '
        <ul>' . $res . '</ul>
        ' . "
    ";
                }
                $str .= '
    </li>' . "
    ";
            }
        }
        return $str;
    }
    
    $str = getCategory(0, $data);
    echo $str;
    
    ?>
    

    So you get output like this:

    <li catId="6">
        <a> catLevel1</a>
        <ul>
            <li catId="20">
                <a> catLevel2</a>
                <ul>
                    <li catId="21">
                        <a> catLevel3</a>
                        <ul>
                            <li catId="22">
                                <a> catLevel4</a>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
    <li catId="7">
        <a> catLevel1</a>
    </li>
    <li catId="8">
        <a> catLevel1</a>
        <ul>
            <li catId="23">
                <a> catLevel2</a>
            </li>
            <li catId="24">
                <a> catLevel2</a>
            </li>
        </ul>
    </li>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c