php - 将嵌套数组转换为嵌套 html block 的递归 php 函数

标签 php recursion multidimensional-array

我正在寻找一个递归的 php 函数,它会调用一个函数来生成嵌套的 HTML block (不一定只是 DIV)。因此,例如,对于以下数组:

$a = array(
    'b' => 'b value',
    'c' => 'c value',
    'd' => array(
        'd1' => array(
            'd12' = 'd12 value'
        ),
        'd2' => 'd2 value'
    ),
    'e' => 'e value'
);

和下面的函数

function block( $key ) {
    return '<div>'.$key.'</div>';
}

会导致

<div>
    key - b
</div>
<div>
    key - c
</div>
<div>
    key - d
    <div>
        key - d1
        <div>
            key - d12
        </div>
    </div>
    <div>
        key - d2
    </div>
</div>
<div>
    key - e
</div>

最佳答案

请原谅粗略的格式设置和非常粗略的缩进方式,但它应该像您上面的格式一样工作。注意 in_array(...) 的使用

代码

nestdiv($a);

function nestdiv($array, $depth = 0) {
    $indent_str = str_repeat(" ", $depth);

    foreach ($array as $key => $val) {
        print "$indent_str<div>\n";
        print "${indent_str}key - $key\n";
        if (is_array($val))
            nestdiv($val, ($depth+1));
        print "$indent_str</div>\n";
    }
}

输出

<div>
key - b
</div>
<div>
key - c
</div>
<div>
key - d
    <div>
    key - d1
        <div>
        key - d12
        </div>
    </div>
    <div>
    key - d2
    </div>
</div>
<div>
key - e
</div>

关于php - 将嵌套数组转换为嵌套 html block 的递归 php 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1766995/

相关文章:

php - 将 session 数组存储到变量中

c++ - 在c中访问多维数组

CURLOPT_FOLLOWLOCATION 无法激活

php - 构建此数据库的最有效方法是什么?

python - python中使用@符号装饰和不使用@符号的区别

java - 递归程序中类变量到方法参数的转换

php - 如何将多个 PHP 参数传递给 bash

php - 从 PHP 中的变量实例化一个类?

c# - 找到最低的子文件夹并压缩它们

java - 二维数组上 ArrayIndexOutOfBoundsException 的快速帮助