0

我正在尝试使用 php 循环创建嵌套的无序列表。我尝试了不同的方法,但我需要您的帮助来改进我的代码。假设在这个例子中我想要四个级别。

这是我的 PHP 代码:

<ul>
<?php
for($i = 0; $i < 1; $i++): ?>
<li>
    <ul>
    <?php for($j = 0; $j <2; $j++): ?>
        <li>
            <ul>
                <?php for($k = 0; $k <2; $k++): ?>
                <li>
                    <ul>
                        <?php for($l = 0; $l <2; $l++): ?>
                        <li></li>
                        <?php endfor; ?>
                    </ul>
                </li>
                <?php endfor; ?>
            </ul>
        </li>
    <?php endfor; ?>
    </ul>
</li>
<?php
endfor;
?>
</ul>

这是我的 HTML 输出:

<ul>
<li>
    <ul>
        <li>
            <ul>
                <li>
                    <ul>
                        <li></li>
                        <li></li>
                    </ul>
                </li>
                <li>
                    <ul>
                        <li></li>
                        <li></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li>
            <ul>
                <li>
                    <ul>
                        <li></li>
                        <li></li>
                    </ul>
                </li>
                <li>
                    <ul>
                        <li></li>
                        <li></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</li>
</ul>

有更聪明的方法吗?但愿如此。我想知道,因为我的目标是动态定义级别数,而我所做的根本不是动态的!:)

非常感谢您的回复!

4

1 回答 1

1

如果您有特定格式的数组,则可以使用递归函数。

1. 示例数组

$arr = array(
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
    'Aenean id erat et justo eleifend dapibus iaculis non diam.',
    array(
        'Donec viverra mauris sit amet nulla semper sit amet venenatis urna elementum.',
        'Aliquam bibendum arcu metus, vitae pellentesque felis.',
        'Etiam eu erat est, sit amet mollis justo.',
        array(
            'Cras luctus nulla vitae turpis bibendum rutrum.',
            'Donec vel sem mi, eu viverra magna.',
            'Aliquam non leo vitae turpis commodo malesuada.',
            'Suspendisse congue nulla nec justo molestie convallis sodales dolor tincidunt.',
            array(
                'Etiam blandit dictum metus, eget ullamcorper odio commodo eu.',
                'Integer congue eros a mauris feugiat volutpat.',
                'Sed nec diam sem, ac sollicitudin libero.',
                'Phasellus vulputate tincidunt risus, vitae convallis nisi feugiat id.',
                'Donec vehicula lobortis magna, sed euismod massa tristique sed.',
            ),
        ),
        'Fusce vel sem sem, non volutpat nisi.',
        'Pellentesque molestie ipsum vitae orci sodales iaculis.',
    ),
);

2.递归函数

function list_it($data_array, $list_tag = 'ul') {
    // enforce valid list tag
    if ($list_tag != 'ul' && $list_tag != 'ol')
        $list_tag = 'ul';

    // we need an array with data
    if (!is_array($data_array) || empty($data_array))
        return;
    echo '<',$list_tag,'>';

    foreach ($data_array as $element) {
        if (is_array($element)) {
            list_it($element);
        }
        else {
            echo '<li>',$element,'</li>';
        }
    }
    echo '</',$list_tag,'>';
}

list_it($arr, 'ul');

3.输出(我添加的HTML缩进,不是函数)

<ul>
    <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
    <li>Aenean id erat et justo eleifend dapibus iaculis non diam.</li>
    <ul>
        <li>Donec viverra mauris sit amet nulla semper sit amet venenatis urna elementum.</li>
        <li>Aliquam bibendum arcu metus, vitae pellentesque felis.</li>
        <li>Etiam eu erat est, sit amet mollis justo.</li>
        <ul>
            <li>Cras luctus nulla vitae turpis bibendum rutrum.</li>
            <li>Donec vel sem mi, eu viverra magna.</li>
            <li>Aliquam non leo vitae turpis commodo malesuada.</li>
            <li>Suspendisse congue nulla nec justo molestie convallis sodales dolor tincidunt.</li>
            <ul>
                <li>Etiam blandit dictum metus, eget ullamcorper odio commodo eu.</li>
                <li>Integer congue eros a mauris feugiat volutpat.</li>
                <li>Sed nec diam sem, ac sollicitudin libero.</li>
                <li>Phasellus vulputate tincidunt risus, vitae convallis nisi feugiat id.</li>
                <li>Donec vehicula lobortis magna, sed euismod massa tristique sed.</li>
            </ul>
        </ul>
        <li>Fusce vel sem sem, non volutpat nisi.</li>
        <li>Pellentesque molestie ipsum vitae orci sodales iaculis.</li>
    </ul>
</ul>
于 2013-02-28T18:33:01.407 回答