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

重要な部分が1つだけ欠けています。再帰呼び出しを行うと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 に答える