codeigniter helper中的全局变量

时间:2013-05-01 04:27:19

标签: php codeigniter recursion global-variables helper

我正在写一个递归函数,如果有的话,它会找到数组的子节点。现在我想知道数组进入其中寻找其子级的级别。 表示

Array
(
[0] => stdClass Object
    (
        [fld_id] => 7
        [fld_value] => Color
        [fld_price] => 0.00
        [fld_attribute_id] => 2
        [fld_parent_id] => 5
        [children] => Array
            (
                [0] => stdClass Object
                    (
                        [fld_id] => 8
                        [fld_value] => Red
                        [fld_price] => 12.00
                        [fld_attribute_id] => 2
                        [fld_parent_id] => 7
                        [children] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [fld_id] => 10
                                        [fld_value] => light red
                                        [fld_price] => 20.00
                                        [fld_attribute_id] => 2
                                        [fld_parent_id] => 8
                                        [children] => Array
                                            (
                                            )

                                    )

                                [1] => stdClass Object
                                    (
                                        [fld_id] => 11
                                        [fld_value] => dark red
                                        [fld_price] => 4.00
                                        [fld_attribute_id] => 2
                                        [fld_parent_id] => 8
                                        [children] => Array
                                            (
                                                [0] => stdClass Object
                                                    (
                                                        [fld_id] => 14
                                                        [fld_value] => double_dark
                                                        [fld_price] => 3.00
                                                        [fld_attribute_id] => 2
                                                        [fld_parent_id] => 11
                                                        [children] => Array
                                                            (
                                                            )

                                                    )

                                                [1] => stdClass Object
                                                    (
                                                        [fld_id] => 15
                                                        [fld_value] => single_dark
                                                        [fld_price] => 0.00
                                                        [fld_attribute_id] => 2
                                                        [fld_parent_id] => 11
                                                        [children] => Array
                                                            (
                                                            )

                                                    )

                                            )

                                    )

                            )

                    )

                [1] => stdClass Object
                    (
                        [fld_id] => 9
                        [fld_value] => Green
                        [fld_price] => 5.00
                        [fld_attribute_id] => 2
                        [fld_parent_id] => 7
                        [children] => Array
                            (
                            )

                    )

            )

    )

)

我的递归函数在下面,它是用codeigniter helper编写的

function get_children_by_par_id($parent_id)
{
$children = get_children($parent_id);
$return_value = array();
foreach($children->result() as $result)
{
    $result->children = get_children_by_par_id($result->fld_id);
    $return_value[]= $result;
}
return ($return_value); 
}

function get_children($id){
    $CI = get_instance();
    $CI->db->where('fld_parent_id',$id);
    return $CI->db->get('tbl_attribute_values');
}

现在我想要计算数组的深度,它使用相同的递归函数进入内部的程度,我试图计算它在递归函数中进入的级别,即get_children_by_par_id($parent_id)。但由于递归函数计数初始化为其原始值。所以我需要在帮助器中创建一个全局变量。所以任何人都可以帮助我......或者你能给我最好的想法来计算数组的深度吗?是的数组可以进入n级 ......

2 个答案:

答案 0 :(得分:0)

这帮助了我go here。我做了一些扭曲并转向代码,为了进一步参考,你可以Visit here。你可以在codeigniter中创建一个全局变量。

答案 1 :(得分:0)

您可以声明一个变量来计算班级中的等级,然后用它来计算函数get_children_by_par_id中的等级。

正如您在test_function中看到的那样,在调用函数后可以得到$count变量的值,如果需要再次调用该函数,则必须重置它。

class yourClass extends somthing{
        $count = 0;
        function get_children_by_par_id($parent_id){
           $children = get_children($parent_id);
           $return_value = array();
           foreach($children->result() as $result){
               $result->children = get_children_by_par_id($result->fld_id);
               $this->count++;
               $return_value[]= $result;
           }
           return ($return_value); 
        }

        function get_children($id){
             $CI = get_instance();
             $CI->db->where('fld_parent_id',$id);
             return $CI->db->get('tbl_attribute_values');
        }
        function test_function(){
             $childs = $this->get_children_by_par_id(1);
             $childs_count = $this->count; // get the levels count
             $this->count = 0; //reset the counter
        }

    }