用搜索提取php数组

时间:2015-04-16 10:49:56

标签: php arrays

我有一个数组,就像这样

Array ( [id] => 1 [did] => 1 [title] => first link [link] => link.com ) 
Array ( [did] => 1 [title] => second link [link] => link2.com ) 
Array ( [id] => 2 [did] => 2 [title] => forum 1 [link] => forum.php ) 
Array ( [did] => 2 [title] => forum 2 => viewtopic.php ) 
Array ( [did] => 2 [title] => register [link] => register.php ) 

我想提取它,就像这样

- first link
-- seconde link
- forum 1
-- forum 2
-- register

id,是main,并且确实是此数组中的父级。 无论如何? 我想要这个输出:

<ul>
    <li><a href="link.com">first link</a>
        <ul>
            <li><a href="link2.com">seconde link</a></li>
        </ul>
    </li>
    <li><a href="forum.php"> forum 1</a>
        <ul>
            <li><a href="viewtopic.php"> forum 2</a></li>
            <li><a href="register.php"> register</a></li>
        </ul>
    </li>
</ul>

1 个答案:

答案 0 :(得分:1)

结构不是很干净,但有时候数据不干净。这样的事情应该有效(尽管<?=短标记可能会导致问题,如果没有在您的环境中设置)。我只使用冒号而不是大括号,因为我认为在这种混合代码中更容易阅读。

<ul>
<?php foreach ($arr as $item): ?>
    <li><a href="<?=$item['link']?>"><?=$item['title']?></a>
        <ul>
        <?php 
            foreach ($arr as $item2): 
               if ((array_key_exists('did', $item2) && ($item2['did'] == $item['id'])):
        ?>
             <li><a href="<?=$item2['link']?>"><?=$item2['title']?></a></li>    
        <?php
               endif;
             endforech;
        ?>
        </ul>
    </li>
<?php endforeach;?>
</ul>