用于树类的递归php mysql查询/函数

时间:2011-03-30 15:15:26

标签: php mysql recursion recursive-query

我有一个oscommerce设置,并决定在每个类别中添加“最受欢迎”的产品。我需要查询所有子类别,以便我可以查询列表中最受欢迎的产品并显示它。

但是。

我有这个功能,我似乎无法从中获取类别ID的数组。这个问题与范围有关吗?

 $children_ids = array(); 

function fetch_children($parent) {     

 $result = tep_db_query('SELECT `categories_id` FROM categories WHERE parent_id = "'.(int)$parent.'"'); 

   while($row = tep_db_fetch_array($result)) {


        $children_ids[] = (int)$row['categories_id'];


        fetch_children($row['categories_id']);
   }   
}

此时我并没有尝试使用$children_ids变量访问数据数组,但这似乎不包含任何内容!?我也试过array_push();

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您正在尝试从函数内部修改全局变量。你可以从函数体内部声明变量global(但我强烈建议不要使用它)或让函数返回children_ids数组,这将是这样的(未经测试):

function fetch_children($parent) {

  $result = tep_db_query('SELECT categories_id FROM categories WHERE parent_id = "'.(int)$parent.'"');
  $list = array();
  while($row = tep_db_fetch_array($result)) {

    $list[] = (int)$row['categories_id'];


    $list = array_merge($list, fetch_children($row['categories_id']));
  }
  return $list;
}

$children_ids = fetch_children($root_node_id);