1

我建立了一个 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();

有任何想法吗?

4

1 回答 1

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);
于 2011-03-30T15:23:43.667 回答