gpt4 book ai didi

php - 获取子类别和子子类别以及无限子子子类别

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:15 26 4
gpt4 key购买 nike

我正在尝试循环一个函数,该函数将所有子类别..从一个主要类别放入一个表并放入数组中。

示例表:

ID   | ParentID
1 | 0
2 | 1
3 | 1
4 | 2
5 | 4
6 | 3
7 | 1

(子类别有parentID)

现在函数 PHP 中的示例采用主类别 (ID=1) 的所有子子类别

    var_dump(getSubCategories(1));

function getSubCategories($parent_id = 0, $subcategories = array())
{
global $db;

$query = $db->query("
SELECT ID
FROM categories
WHERE ParentID = $parent_id
ORDER
BY Name ASC
");

while ($row = $query->fetch_assoc()) {
$subcategories = getSubCategories($row['ID'], $subcategories);
}
return $subcategories;
}

问题是将 ID 放入一个数组中,因为上面的代码打印了这个结果:

array(0) { }

我注意到的一件事是,如果我在下面添加这一行:

echo $row['ID'] . ',';

它正确地打印结果,但不是作为数组:

2,3,4,5,6,7

我的期望是这样的,例如:array(1, 2, 3, 4, 5, 6, 7) 等等,而不是多维的。

最佳答案

您应该传递$subcategories 参数by reference

    $subCategories = array();
getSubCategories(1, $subCategories);
var_dump($subCategories);
function getSubCategories(&$subCategories, $parent_id = 0)
{
global $db;

$query = $db->query("
SELECT ID
FROM categories
WHERE ParentID = $parent_id
ORDER
BY Name ASC
");
while ($row = $query->fetch_assoc()) {
getSubCategories($subCategories, $row['ID']);
}
}

或者只是将结果附加到 $subcategories 变量。

    var_dump(getSubCategories(1));
function getSubCategories($parent_id = 0)
{
global $db;

$query = $db->query("
SELECT ID
FROM categories
WHERE ParentID = $parent_id
ORDER
BY Name ASC
");
$subcategories = array();
while ($row = $query->fetch_assoc()) {
$subcategories = array_merge($subcategories, getSubCategories($row['ID']));
}
return $subcategories;
}

关于php - 获取子类别和子子类别以及无限子子子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com