我有一个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();
有什么想法吗?
答案 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);