【发布时间】:2015-12-15 14:50:18
【问题描述】:
我正在使用 Opencart。类别存储在category 表中,主键category_id 和表示父类别的字段parent_id。
给定一个 category_id,我将无法按一定百分比更新所有产品的价格。
如果我可以获得所有 category_ids 的列表,即子类别或子子类别或子子子类别等。使用这些来运行价格更新应该是相当直接的。
我知道有很多使用类似于this的递归函数构建php数组树结构的例子
public function getTree($parent_category_id) {
$arr = array();
$sql = "select * from bs_category where parent_id = '$parent_category_id'";
$query = $this->db->query($sql);
foreach ($query->rows as $row) {
$arr[] = array(
"Parent" => $row["category_id"],
"Children" => $this->getTree($row["category_id"])
);
}
return $arr;
}
但这给了我一个树形结构
Array
(
[0] => Array
(
[Parent] => 568
[Children] => Array
(
[0] => Array
(
[Parent] => 571
[Children] => Array
(
[0] => Array
(
[Parent] => 572
[Children] => Array
(
)
)
)
)
)
)
而我想要的只是一个简单的列表,例如。
array(568, 571, 572)
如果没有奇怪的重复项等,我似乎无法获得所有 category_ids 的简单列表...... tbh 递归都让我有点吃惊......
非常感谢任何帮助。
【问题讨论】:
-
如何退出递归?另外,您如何将结果传递给其他函数?你的参数列表中没有它
-
那么这里有什么问题..函数似乎没问题..你只需要用
$categories = $this->getTree(0);调用它 -
问题是这给了我一个树结构,我只想要一个简单的列表/数组(见上面的编辑),谢谢
-
那么你想递归地获取所有父ID的数组吗?
-
是的,所有 category_id 的数组,我猜在底层,他们将是没有任何子类别的父母......所以是的。