从数组创建导航



我必须从PERL脚本生成的文件创建导航系统。此脚本解析目录树并生成一个文件,其中每一行都表示一个目录级别。

我无法访问这个 PERL 脚本。它生成类似这个模型的东西。

产品/

制造商1/产品1产品/制造商1/产品1/描述产品/制造商1/产品2产品/制造商1/产品2/描述产品/制造商2/产品1/产品/制造商2/产品1/描述

我构建了一个脚本来创建如下数组

$array = array(
    array(
        'Products',
        'Manufacturer1',
        'Product1'
    ),
    array(
        'Products',
        'Manufacturer1',
        'Product1',
        'Description'
    ),
    array(
        'Products',
        'Manufacturer1',
        'Product2'
    ),
    array(
        'Products',
        'Manufacturer1',
        'Product2',
        'Description'
    ),
    array(
        'Products',
        'Manufacturer2',
        'Product1'
    ),
    array(
        'Products',
        'Manufacturer2',
        'Product1'
        'Description'
    ),
)

它应该创建一个这样的 HTML:

<ul>
    <li>Products
        <ul>
            <li>Manufacturer1
                <ul>
                    <li>Product1
                        <ul>
                            <li>Description</li>
                        </ul>
                    </li>
                    <li>Product2
                        <ul>
                            <li>Description</li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li>Manufacturer2
                <ul>
                    <li>Product1
                        <ul>
                            <li>Description</li>
                        </ul>
                    </li>
                    <li>Product2
                        <ul>
                            <li>Description</li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

我不知道如何解决它。

这是一个

令人讨厌的数组结构;理想情况下,您将拥有轻松识别产品、制造商等的密钥。 假设值的位置保持不变,您可以执行以下操作:

$products = array();
foreach ( $array as $v ) {
    if ( isset($v[1]) && isset($v[2]) ) {
        $products[$v[1]][$v[2]] = isset($v[3]) ? $v[3] : '';
    }
}

无论你怎么做,你都会希望把它放到一个多维数组中,这样HTML就会变得

像:
<ul>
    <li>Products
    <ul>
        <?php
        foreach ( $products as $k => $v ) {
            ?>
            <li><?php echo $k ?>
                <ul>
                <?php
                foreach ( $v as $k2 => $v2 ) {
                    ?>
                    <li><?php echo $k2 ?>
                        <ul>
                            <li><?php echo $v2 ?></li>
                        </ul>
                    <?php
                }
                ?>
                </ul>
            </li>
            <?php
        }
        ?>
        </ul>
    </li>
</ul>

相关内容

  • 没有找到相关文章

最新更新