我正在尝试从包含交叉引用的数据库表中获取一系列 id - 每个元素,一个“主题”,都包含同一个表中的“父主题”列。给定一个父主题,我想构建一个包含所有以它为父主题的子主题的数组,然后是这些主题的所有子主题,等等。
这似乎并不难,但作为一个自学成才的程序员,我觉得我使用了所有错误的工具。尤其是merge-array()
和var_dump()
部分,感觉不对,我不确定整体方法。我应该用什么替换这些元素?
function get_subtopics($parent_topic)
{
//returns an array of subtopics minus the first
$all_subs = array();
$query = $this->db->get_where('topics', array('parent_topic' => $parent_topic));
$subs = $query->result_array();
$resubs = array();
$query->free_result();
//push subs to all_subs
//while the subs array has members, find their child
while (count($subs)>0) {
foreach ($subs as $s) {
$query = $this->db->get_where('topics', array('parent_topic' => $s['id']));
$resubs = array_merge($resubs, $query->result_array());
$query->free_result();
}
$all_subs = array_merge($all_subs, $resubs);
var_dump($resubs);
}
//Returns an array of ids
return $all_subs;
}
编辑:这样做的目的是形成一个主题“池”,从中为随机生成器绘制问题 - 我试图将所有子主题放入一个数组中,没有树结构来区分它们。指定父主题(例如“数学”)的用户应该获得数学子主题(例如“代数”、“代数:二次方”或“微积分”)的均匀组合,从中可以得出问题。希望澄清一点。