欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

求个小功能写法解决方案

程序员文章站 2022-05-11 20:46:02
...
求个小功能写法
有一个分类表 calss

ID -----唯一标识
pid -----父级ID
name -----名字
path -----路径

CREATE TABLE `calss` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL DEFAULT '0',
`name` varchar(32) NOT NULL,
`path` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;



现在求一个路径的写法

例如数据如下

INSERT INTO calss VALUES ('1', '0', 'WEB开发',web);
INSERT INTO calss VALUES ('2', '1', '后端',control);
INSERT INTO calss VALUES ('3', '2', '语言',language);
INSERT INTO calss VALUES ('4', '2', '数据库',data);
INSERT INTO calss VALUES ('5', '3', 'php',php);
INSERT INTO calss VALUES ('6', '3', 'jsp',jsp);
INSERT INTO calss VALUES ('7', '3', 'asp',asp);
INSERT INTO calss VALUES ('8', '0', '手机应用开发',phone);
INSERT INTO calss VALUES ('9', '8', 'ios',ios);

求 php类别的 路径
最终结果如下格式
$php_path="web/control/language/php/";


求个具体php代码实现 感激不尽 据说用到递归思想 我看了一天递归 楞是没看明白 递归的思想

可否能不用递归实现,用递归实现的 请帮忙写清楚每一句代码注释 感激不尽了


最后一句 老大 你好 妞哥 你好

------解决方案--------------------
可以按照他们说的循环SQL获取

也可以...随便写的,能看懂了自己再改哈
PHP code


//SELECT id,pid,path FROM calss;取得数据集组合成下面的数组
$array = array('1' => 0, '2' => 1, '3' => 2, '4' => 2, '5' => 3, '6' => 3, '7' => 3, '8' => 0, '9' => 8);
$pathArray = array(1 => 'web', 2 => 'control', 3 => 'language', 4 => 'data', 5 => 'php', 6 => 'jsp', 7 => 'asp', 8 => 'phone', 9 => 'ios');
//取得id列表
$idArry=array();
getTopID(5, $array);
//循环id列表输出最后结果
echo listPath(5, $idArr, $pathArray), "\n";
unset($idArr);
getTopID(6, $array);
echo listpath(6, $idArr, $pathArray), "\n";
unset($idArr);
getTopID(8, $array);
echo listpath(8, $idArr, $pathArray), "\n";
unset($idArr);
getTopID(9, $array);
echo listpath(9, $idArr, $pathArray), "\n";
unset($idArr);

//函数
/**
 * 取得上级Id数组
 * @param $id
 * @param $array
 * @return array
 */
function getTopID($id, $array)
{
    global $idArr;
    if (isset($array[$id])) {
        $idArr[] = $array[$id];
        getTopID($array[$id], $array);
    }
}

/**
 * 根据上级ID数组排序结果
 * @param $id
 * @param $list
 * @param $array
 * @return string
 */
function listPath($id, $list, $array)
{
    $path = '';
    array_push($list, $id);
    sort($list);
    foreach ($list as $value) {
        if (isset($array[$value])) {
            $path .= $array[$value] . '/';
        }
    }
    return $path;
} 
求个小功能写法解决方案

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频