Повторяющиеся предметы на уровне 2

У меня есть страница, которая отображает организационное дерево, но на уровне 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>

Я хотел опустить 2-ую запись Адель, это мой пример кода на 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 ответ

Решение

Что должно сделать это:

<?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 блоки, если все имена уже были замечены.

Другие вопросы по тегам