只是一个基于简单数据库表构建面包屑的简单函数,其中有列:
id, parent, title
父母"列可以是0表示顶级,或者" id"子类别的另一行(无限深度)。我试图做的就是有一个功能,可以帮助我从它构建面包屑,从" id"我指定的最底层类别,并一直到顶级父级。这就是我所拥有的:
function getCategoryParents($id=0, $out=array()) {
$id = (int)$id;
if ($id > 0) {
$query = "SELECT * FROM `" .$this->tables['categories']. "` WHERE (`id`=" .$id. ")";
$cat = sqlfetch(sqlquery($query));
array_push($out, $cat);
if ($cat['parent']) {
$this->getCategoryParents($cat['parent'], $out);
} else {
return $out;
}
} else {
return $out;
}
}
但它没有返回任何东西。但是,如果我从函数中执行print_r($ out)而不是return,例如:
if ($cat['parent']) {
$this->getCategoryParents($cat['parent'], $out);
} else {
echo print_r($out);
}
它输出数组就好了。但我需要能够实际使用数组,所以我需要从函数返回它。我确定我错过了一些非常小的东西,但我无法理解我的生活!
另外,我不想做一个全局变量,并且还需要初始函数调用中指定的类别id的信息作为数组的一部分(正如我试图做的那样)。 / p>
答案 0 :(得分:0)
根据建议,这是最终的工作:
function getCategoryParents($id=0) {
$out = array();
$id = (int)$id;
if ($id > 0) {
$query = "SELECT * FROM `" .$this->tables['categories']. "` WHERE (`id`=" .$id. ")";
$cat = sqlfetch(sqlquery($query));
array_push($out, $cat);
if ($cat['parent']) {
$out = array_merge($out, $this->getCategoryParents($cat['parent']));
}
}
return $out;
}