2级重复项目

时间:2013-03-18 17:21:18

标签: php duplicate-removal organizational-chart

我有一个显示组织树的页面,但是在第2级中有重复的项目。我想要的是避免重复...

以下是示例显示:

<ul id="org" style="display: none;">
<li>Brit School                        
    <ul>
        <li>Amy Winehouse
            <ul>
                <li>Carina Round</li>
            </ul>
        </li>
        <li>Adele Adkins
            <ul>
                <li>Kreayshawn K</li>
                <li>Leona Lewis</li>
            </ul>
        </li>
        <li>Adele Adkins
            <ul>
                <li>Kreayshawn K</li>
                <li>Leona Lewis</li>
            </ul>
        <li>Arctic Monkey
            <ul>
                <li>PJ Harvey</li>
            </ul>
        </li>
    </ul>

</li>

我想省略第二条记录Adele这是我在PHP中的示例代码

<ul id="org" style="display: none;">
<?php foreach ($lvl1 as $genesA) {?>
    <li>
        <?php echo $genesA->LevelFullName1?>
        <?php if($genesA->lvlMemF) {?>
        <ul>
        <?php if($genesA->lvlMemF) {?>
            <?php foreach ($lvl2 as $genesB) {?>
                <?php if($genesB->lvlMemS) {?>
                <li><?php echo $genesB->LevelFullName2 ?>
                <?php if($genesB->lvlMemS) {?>
                  <ul>
                    <?php if($genesB->lvlMemS) {?>
                        <?php foreach ($lvl3 as $genesC) {?>
                            <?php if($genesB->lvlMemS == $genesC->referrerLvl3) {?>
                                <li>
                                    <?php echo $genesC->LevelFullName3?>
                                </li>
                            <?php } ?>
                        <?php } ?>
                    <?php } ?>
                  </ul>
                  <?php } ?>
                </li>
                <?php } else { ?>

                <?php } ?>
            <?php } ?>
        <?php } ?>
        </ul>

        <?php }?>
    </li>
<?php } ?>

我不确定我是否正走在正确的轨道上我只想要一个肮脏的解决方案:)

1 个答案:

答案 0 :(得分:1)

应该这样做:

<?php
$seen = array();
?>
<ul id="org" style="display: none;">
<?php foreach ($lvl1 as $genesA) {?>
    <li>
        <?php echo $genesA->LevelFullName1?>
        <?php if($genesA->lvlMemF) {?>
        <ul>
        <?php if($genesA->lvlMemF) {?>
            <?php foreach ($lvl2 as $genesB) {?>
                <?php if($genesB->lvlMemS) {?>
                <li><?php echo $genesB->LevelFullName2 ?>
                <?php if($genesB->lvlMemS) {?>
                  <ul>
                    <?php if($genesB->lvlMemS) {?>
                        <?php foreach ($lvl3 as $genesC) {?>
                            <?php if($genesB->lvlMemS == $genesC->referrerLvl3) {?>
                                <?php if(!in_array($genesC->LevelFullName3, $seen)?>
                                <li>
                                    <?php echo $genesC->LevelFullName3?>
                                    <?php $seen[] =$genesC->LevelFullName3;?>
                                </li>
                                <?php }?>
                            <?php } ?>
                        <?php } ?>
                    <?php } ?>
                  </ul>
                  <?php } ?>
                </li>
                <?php } else { ?>

                <?php } ?>
            <?php } ?>
        <?php } ?>
        </ul>

        <?php }?>
    </li>
</ul>

你可能想检查我的if是否在那里,因为如果已经看到所有的名字,你可能会得到空的ul块。