即時通訊編寫一個遞歸函數,如果它有一個數組的孩子。現在我想知道數組進入尋找孩子的級別。 爲如在codeigniter助手中的全局變量
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
(
)
)
)
)
)
和我遞歸函數低於它是用笨幫手
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)
。但由於遞歸函數count被初始化爲其原始值。所以我需要在助手中創建一個全局變量。所以任何一個可以幫助我在這裏....或者你可以給我最好的主意來計算陣列的深度和肯定陣列可以去到N級 ...
它是不是類它只是一個幫手,我們做的只有功能閒來無事... – Robz 2013-05-01 05:48:17
那麼你需要使用配置文件來創建一個全局變量,你可以在這裏看到細節的http:// ellislab。 com/codeigniter/user-guide/libraries/config.html – 2013-05-01 05:57:56
該函數也被另一個循環調用,所以我想循環再次初始化爲0 – Robz 2013-05-01 06:52:48