类别的嵌套函数

时间:2016-12-12 12:55:04

标签: php

我试图为多个子类别创建一个嵌套函数,我有以下数组和子类别。

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [name] => Women
        )

    [1] => Array
        (
            [id] => 6
            [parent_id] => 0
            [name] => Men
        )

    [2] => Array
        (
            [id] => 4
            [parent_id] => 1
            [name] => Child of women 3
        )

    [3] => Array
        (
            [id] => 5
            [parent_id] => 4
            [name] => Child of "Child of women 3"
        )
)

以及以下功能

private function categories($array, $parent_id = 0) {
    $return = array();
    foreach($array as $key => $val) {
        if($val['parent_id'] == $parent_id) {
            $return[$val['id']] = $val;
        } else {
            $return[$val['parent_id']]['children'][] = $val;
        }
    }
    return $return;
}

现在它仅适用于1个子类别,但我想要这个输出:

Women
--Child of women 3
----Child of "Child of women 3
Men

3 个答案:

答案 0 :(得分:1)

private function categories($array, $parent_id = 0) {
    $textb = '';
    foreach($array as $key => $val) {
        if($val['parent_id'] == $parent_id) {
            $current_id = $val['id'];

            $textb .= '<li>' . $val['name'];

            $categories = self::categories($array, $current_id);
            if(isset($categories) && !empty($categories))
                $textb .= '<ul>' . $categories . '</ul>';

            $textb .= '</li>';
        }
    }
    return $textb;
}

答案 1 :(得分:0)

我管理了一些东西,但它看起来很奇怪而且有重复。

private function categories($array, $parent_id = 0) {
    $return = array();
    foreach($array as $key => $val) {
        if($val['parent_id'] == $parent_id) {
            $return[$val["id"]] = $val["name"];
            $return[$val["id"]] = array_merge($return, self::categories($array, $val["id"]));
        }
    }
    return $return;
}


Array
(
    [1] => Array
        (
            [0] => Women
            [1] => Array
                (
                    [0] => Child of women 3
                    [1] => Array
                        (
                            [0] => Child of "Child of women 3"
                        )

                )

        )

    [6] => Array
        (
            [0] => Array
                (
                    [0] => Women
                    [1] => Array
                        (
                            [0] => Child of women 3
                            [1] => Array
                                (
                                    [0] => Child of "Child of women 3"
                                )

                        )

                )

            [1] => Men
        )

)

答案 2 :(得分:0)

试试这个:[请注意,我尝试了没有上课的单独文件。]

function categories($array, $parent_id = 0) {
    $return = array();
    foreach($array as $key => $val) {       
        if($val['parent_id'] == $parent_id) {           
            $return[$val["id"]] = categories($array, $val["id"]);
            $return[$val["id"]]["name"] = $val["name"];
        }
    }
    return $return;
}

它将为您提供如下输出:

Array
(
    [1] => Array
        (
            [4] => Array
                (
                    [5] => Array
                        (
                            [name] => Child of "Child of women 3"
                        )

                    [name] => Child of women 3
                )

            [name] => Women
        )

    [6] => Array
        (
            [name] => Men
        )

)