PHP - 在select选项中显示的循环层次结构数组

时间:2018-04-29 12:29:39

标签: php arrays codeigniter recursion

我有像这样的层次结构对象。我想显示到层次结构组合框..

我正在使用codeigniter进行开发。

Array
(
    [0] => stdClass Object
        (
            [ki_id] => 1
            [kf_id] => 1
            [ki_author] => 2
            [ki_name] => kakek
            [ki_uom] => percent
            [ki_level] => parent
            [ki_year_date] => 2018-01-01
            [ki_parent_id] => 
            [children] => Array
                (
                    [0] => stdClass Object
                        (
                            [ki_id] => 2
                            [kf_id] => 1
                            [ki_author] => 2
                            [ki_name] => ayah
                            [ki_uom] => percent
                            [ki_level] => child
                            [ki_year_date] => 2018-01-01
                            [ki_parent_id] => 1
                            [children] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [ki_id] => 4
                                            [kf_id] => 1
                                            [ki_author] => 2
                                            [ki_name] => aku
                                            [ki_uom] => percent
                                            [ki_level] => child
                                            [ki_year_date] => 2018-01-01
                                            [ki_parent_id] => 2
                                            [children] => Array
                                                (
                                                    [0] => stdClass Object
                                                        (
                                                            [ki_id] => 7
                                                            [kf_id] => 1
                                                            [ki_author] => 2
                                                            [ki_name] => anak ku
                                                            [ki_uom] => percent
                                                            [ki_level] => child
                                                            [ki_year_date] => 2018-01-01
                                                            [ki_parent_id] => 4
                                                        )

                                                )

                                        )

                                    [1] => stdClass Object
                                        (
                                            [ki_id] => 6
                                            [kf_id] => 1
                                            [ki_author] => 2
                                            [ki_name] => adik
                                            [ki_uom] => percent
                                            [ki_level] => child
                                            [ki_year_date] => 2018-01-01
                                            [ki_parent_id] => 2
                                        )

                                )

                        )

                    [1] => stdClass Object
                        (
                            [ki_id] => 3
                            [kf_id] => 1
                            [ki_author] => 2
                            [ki_name] => paman
                            [ki_uom] => percent
                            [ki_level] => child
                            [ki_year_date] => 2018-01-01
                            [ki_parent_id] => 1
                            [children] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [ki_id] => 5
                                            [kf_id] => 1
                                            [ki_author] => 2
                                            [ki_name] => keponakan
                                            [ki_uom] => percent
                                            [ki_level] => child
                                            [ki_year_date] => 2018-01-01
                                            [ki_parent_id] => 3
                                        )

                                )

                        )

                )

        )

);

如何在HTML中使用递归循环将此数组显示为hieararchy组合框。我需要帮助才能解决这个问题

<option>- kakek</option> 
<option>-- ayah</option> 
<option>--- aku</option> 
<option>---- anakku</option> 
<option>--- adik ku</option> 
<option>-- paman</option> 
<option>--- keponakan</option> 

谢谢

1 个答案:

答案 0 :(得分:0)

一个简单的递归应该这样做

public function createTree($arrData, $level = 0)
{
    $level ++;
    foreach($arrData AS $obj)
    {
        echo '<option>'.str_repeat('-', $level).$obj->ki_name.'</option>';
        if (isset($obj->children) && is_array($obj->children))
        {
            $this->createTree($obj->children, $level);
        }
    }
}