我目前有一个代码片段,其中对于每个类别,它将找到子类别:
$categories = array_map(
function($child)
{
$child['children'] =
$this->getChildren(
$child['id'],
!empty($this->request->get['language_id']) ?
$this->request->get['language_id'] : 1
);
return $child;
}, $categories);
getChildren()
将递归获取一个类别的子级:
private function getChildren($parent_id, $language_id) {
$this->load->model('official/category');
$children =
$this->model_official_category->getCategoriesByParentId(
$parent_id,
$language_id
);
// For each child, find the children.
foreach ($children as $child) {
$child['children'] = $this->getChildren(
$child['id'],
$language_id
);
}
return $children;
}
目前,使用数组中的my lambda函数\u map()
,只检索子类别的子类别,因此如果每个子类别都有自己的子类别,则不会将其保存到子类别中。
我如何显示子子类别给我们的子类别?
我想用我的代码做的是获取一个父级,获取它的子级,然后将这些子级中的每一个视为父级,递归地获取它的子级,但是我的JSON输出并没有反映这一点。只有父对象有子对象-子对象没有子对象(尽管我的数据库中有子对象)。
问题是递归foreach
循环将它检索的子对象分配给子数据的副本,而不是子数据本身。
要解决此问题,可以使用引用子数据的foreach
循环,如下所示:
foreach ($children as &$child) {
但是,由于与PHP内部如何实现foreach
相关的许多原因(如果您感兴趣,请提供更多信息),使用for
循环将大大提高内存效率,因为这将避免大量子数据的写时拷贝:
for ($i = 0; isset($children[$i]); $i++) {
$children[$i]['children'] = $this->getChildren(
$children[$i]['id'],
$language_id
);
}
在这种情况下,使用对象而不是数组来表示子数据可能是一个好主意,因为对象总是通过引用(某种形式)传递,并且行为更像您最初期望的那样。
我正试图通过WoodPress主题中的一个函数从woocommerce获取产品类别,我已经做到了: 这将按层次列出所有顶级类别及其下的子类别,但我有子类别(子类别)的子类别,因此如何列出这些子类别。
我有一个数据库是由某人为一项开发而创建的。在那个数据库中,我有一个这样的表。这是一个模式,如果parentID为0,则这些是超级类别。 1个 2. 3. 4个 5. 6. 当我浏览这个网站的时候,我可以得到一个- “AAA”的直接上级为“AA”,而“AA”的直接上级为“A”。因此,乍一看,“AAA”的超级类别是“a”。我想获得任何子类别的超级类别(父类别为“0”)。此子类别流可以是无限的。如果有人
有一个类别,具有以下(重要)属性: 我正在尝试实现类别/子类别的概念。一个类别可以有零个或多个子类别。一个类别只能有一个父类别(可以为null)。对于顶级类别,parentCategory=null。 现在,我有一个所有类别的列表,
我已经为产品创建了一些自定义类别,它有子类别,子类别还有更多的子类别。现在我首先显示主要类别。如果我在那里显示子类别,那么将显示与该类别及其子类别相关的所有子类别。我想一步一步地向他们展示。也就是说,如果用户单击主类别,则会转到其子类别页面。如果用户单击其子类别之一,则应转到子类别,如果没有子类别,则显示产品。这是什么代码 它覆盖了以前的排序顺序。也就是说,如果从仪表板中,我们按排序顺序给出2到3
我试图在Woocommerce的当前子类别下显示子类别,比如这个网站。 我有2个家长类别“产品”和“部门”。然后我有一个菜单链接,可以同时访问两者。 当我在“产品”中时,我想看到子类别的图片,类别的标题,然后是所有子类别的标题和链接。 例如,父类别是“产品”,施工是子类别,密封剂 密封胶 这里有一个屏幕截图可以更好地解释它:
我发现了一个WooCommerce代码片段,它在分类页面上添加了排序功能,并且可以正常工作。 但问题是排序子类别仅显示在父类别页面上,而不显示在子类别页面中。 为了实现这一点,我需要在代码中修改什么? 这是我的密码: 参考:在单独的列表中显示商业类别、子类别和产品