php - 在 PHP 递归中查找从第 n 个子级到顶级的所有中间类别

标签 php mysql recursion categories recursive-query

我有类别表:

Category table:
cat_id      cat_pid     cat_name
    1           0       Women's Fashion
    2           1       Women Accessories
    3           2       Wallets & Cardholders
    4           3       Cases

我的父级类别 ID 为“女性时尚 (cat_id = 1)”,叶级类别 ID 为“案例 (cat_id = 4)”

我想查找 4 到 1 之间的所有类别。

像这样的数组:

Array(
     [0]=>2
     [1]=>3
)

最佳答案

我不知道你使用的是mysqli还是PDO,所以我写了基础代码......

<?php

$cats = [];

function find_parent($parent_id){
    global $cats;
    if ($parent_id > 0){
        $q = mysql_query('SELECT cat_pid FROM Category WHERE cat_id = ' . $parent_id);
        $r = mysql_result($q, 0, 'cat_pid');
        if ($r > 0){
            $cats[] = $parent_id;
            find_parent($r);
        }

    }
}

find_parent(4);
array_shift($cats); //it adds first record too and i think you don't want so removing it here...
print_r($cats);

关于php - 在 PHP 递归中查找从第 n 个子级到顶级的所有中间类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34014492/

相关文章:

php - 如何在 WHERE row = (?) SQL php 语句中放置多个值

php - 将整数和文本字符串等数据从手机发送到 Web 数据库

php - WHILE 循环中的 mysqli 查询

php - 从 MySQL 表中选择看不见的随机行

php - 数据库表不与任何其他表关联

mysql - 如何使用 wpdb select 语句从 wp_postmeta 表中的多行中进行选择 WordPress

php - 替换文字星号 (*) ... 但仅在括​​号内

php - 使用数组更新数据库

swift - 如何修改递归分支定界树节点遍历以避免堆栈溢出?

java - java扫雷游戏中的Stackoverflow异常