php 7.3递归查找下属所有子分类
导读:在PHP 7.3中,递归查找下属所有子分类是一个常见的需求。通过递归算法,我们可以轻松地查找出给定分类的所有下属子分类。这在各种应用程序中都非常有用,比如在电子商务网站中根据商品分类进行筛选、在论坛中显示帖子的嵌套回复等等。假设我们有一个商...
在PHP 7.3中,递归查找下属所有子分类是一个常见的需求。通过递归算法,我们可以轻松地查找出给定分类的所有下属子分类。这在各种应用程序中都非常有用,比如在电子商务网站中根据商品分类进行筛选、在论坛中显示帖子的嵌套回复等等。假设我们有一个商品分类表,其中的每条记录都包含一个唯一ID和一个父ID。我们的目标是根据给定的分类ID查找出该分类下的所有子分类。假设分类表如下所示:
CREATE TABLE categories (id INT PRIMARY KEY,parent_id INT,name VARCHAR(255)); INSERT INTO categories (id, parent_id, name) VALUES(1, NULL, 'Electronics'),(2, NULL, 'Clothing'),(3, 1, 'Mobile Phones'),(4, 1, 'Laptops'),(5, 3, 'Smartphones'),(6, 3, 'Accessories'),(7, 2, 'Shirts'),(8, 2, 'Pants');
现在,我们要根据给定的分类ID查找出该分类下的所有子分类。我们可以使用递归算法来解决这个问题。下面是一个使用PHP 7.3编写的递归函数的示例:
function findSubcategories($categoryId, $depth = 0) { $result = []; // 查询当前分类的所有子分类$sql = "SELECT id, name FROM categories WHERE parent_id = :categoryId"; $stmt = $pdo-> prepare($sql); $stmt-> bindParam(':categoryId', $categoryId, PDO::PARAM_INT); $stmt-> execute(); $subcategories = $stmt-> fetchAll(PDO::FETCH_ASSOC); // 遍历子分类foreach ($subcategories as $subcategory) { // 添加缩进符号,以便在结果中显示层级关系$indentation = str_repeat('-', $depth); // 将当前子分类添加到结果中$result[] = $indentation . $subcategory['name']; // 递归查找当前子分类的所有子分类$result = array_merge($result, findSubcategories($subcategory['id'], $depth + 1)); } return $result; } // 使用示例,查找分类ID为1的分类的所有子分类$subcategories = findSubcategories(1); foreach ($subcategories as $subcategory) { echo 'p> ' . $subcategory . '/p> '; }
以上代码中的
findSubcategories
函数接受一个分类ID和层级深度作为参数,并返回一个包含所有子分类名称的数组。在函数内部,我们首先查询当前分类的所有子分类,并将它们添加到结果数组中。然后,我们使用递归调用findSubcategories
函数来查找每个子分类的所有子分类,并将它们添加到结果中。通过上述的示例代码,我们可以得到以下的输出结果:
- Mobile Phones-- Smartphones-- Accessories- Laptops
这表明,分类ID为1的分类下有两个子分类,分别是“Mobile Phones”和“Laptops”,其中“Mobile Phones”下又包含两个子分类“Smartphones”和“Accessories”。
以上就是使用PHP 7.3递归查找下属所有子分类的示例。通过递归算法,我们可以轻松地处理层级结构的数据,并找到所需的子分类。无论是在电子商务网站还是其他应用程序中,这种递归查找都非常有用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: php 7.3递归查找下属所有子分类
本文地址: https://pptw.com/jishu/576958.html