在PHP中嵌套'for'循环来创建分层无序列表 [英] Nested 'for' loops in PHP to create hierarchical unordered list

查看:100
本文介绍了在PHP中嵌套'for'循环来创建分层无序列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用php循环创建嵌套的无序列表。我尝试过不同的事情,但我需要你的帮助来改进我的代码。

I'm trying to create nested unordered list with php loops. I've tried different things but I need your help to improve my code. Let say in this example that I want four levels.

这是我的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输出:

Here is my HTML output :

<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>

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

Is there a smarter way to do so? I hope so. I would like to know because I aim to define number of levels dynamically and what I've done is not dynamic at all! :)

非常感谢您的回复!

推荐答案

您可以使用递归函数,如果您有数组某些格式。

1。例子array



You can use recursive functions if you have the array in a certain format.

$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。递归函数



2. The recursive function

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缩进,不是函数)



3. Output (HTML indentation added by me, not the function)

<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>

这篇关于在PHP中嵌套'for'循环来创建分层无序列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆