1

我试图构建一个递归函数来处理将未知深度多维数组格式化为 HTML 和嵌套 Div。我认为这应该是小菜一碟,但没有。

到目前为止,这是我想出的:

function formatHtml($array) {
    $var = '<div>';

    foreach ($array as $k => $v) {

            if (is_array($v['children']) && !empty($v['children'])) {
                formatHtml($v['children']);
            }
            else {
                $var .= $v['cid'];
            }
    }

    $var.= '</div>';

    return $var;
}

这是我的数组:

Array
(
    [1] => Array
        (
            [cid] => 1
            [_parent] => 
            [id] => 1
            [name] => 'Root category'
            [children] => Array
                (
                    [2] => Array
                        (
                            [cid] => 2
                            [_parent] => 1
                            [id] => 3
                            [name] => 'Child category'   
                            [children] => Array ()
                        )
                )
        )
)
4

1 回答 1

2

您只缺少一个重要部分:当您对您进行递归调用时,formatHtml()实际上并没有在任何地方包含返回的内容!将其附加到$var,您应该会得到更好的结果:

function formatHtml($array) {
    $var = '<div>';

    foreach ($array as $k => $v) {

            if (is_array($v['children']) && !empty($v['children'])) {
                $var .= formatHtml($v['children']);
            }
            else {
                $var .= $v['cid'];
            }
    }

    $var.= '</div>';

    return $var;
}
于 2010-06-08T13:12:17.110 回答