首页后端开发PHPphp递归查询数据结构 php递归算法经典题目

php递归查询数据结构 php递归算法经典题目

时间2023-04-17 18:09:01发布访客分类PHP浏览529
导读:[PHP][THNIKPHP]如何递归查询数据库 function get_category($id {$str=array( ;//$sql = "select * from biao where id=$id";查询节点,自己写吧$re...

[PHP][THNIKPHP]如何递归查询数据库

function get_category($id){

$str=array();

//$sql = "select * from biao where id=$id"; 查询节点,自己写吧

$result = array('id'=,'parent_id'=); //查询结果一个数组格式

if($result){

$str = get_category($result['parent_id']);

$str[]=$result;

}

return $str;

}

}

调用get_category()就行了,$str第一个元素是节点本身,去掉就行了。

php写函数 根据子类(id)递归查找顶级父类(id) 返回父类名字 (表结构:id name pid)

你这种表结构叫邻接表,查询的方式通过自连接。如

SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4

FROM Tbname AS t1

LEFT JOIN Tbname AS t2 ON t2.pid = t1.id

LEFT JOIN Tbname AS t3 ON t3.pid = t2.id

LEFT JOIN Tbname AS t4 ON t4.pid = t3.id

WHERE t1.name = 'XXXX'

这种方法的主要局限是你需要为每层数据添加一个自连接,随着层次的增加,自连接

变得越来越复杂,检索的性能自然而然的也就下降了。当然这种结构在查询前必须知道该节点所处的层级,否则无法确定自连接的深度。

邻接表模型的局限性很大,用纯SQL实现有一定的难度。不妨考虑其他模型,比如嵌套模型。

嵌套模型的基本结构是树型结构,SQL检索比邻接表要方便很多。

关于嵌套模型,PHPChina的第一期电子杂志PHPer也有过深入探讨,请参考!

php递归查询不会,,求教。就是一个三级分类传个ID找到他的上级,还有父级。。

这种类型的数据,一般数据库中,一张表会有存在两个字段,一个是它本身id,另一个是它的父级parent_id。

既然要找到它的祖父级,sql语句这样写:

$id = empty($_POST['id'])?'':$_POST['id'];

$parent_id = get_parent_id($id);

$p_p_id = get_parent_id($parent_id);

function get_parent_id($id){

$sql = "select parent_id from ecs_table1 where id=" . $id;

return($GLOBALS['db']-getone($sql ));

}

递归,就是根据现有的id,重复取。

上面get_parent_id只是获取父id,当然,你可以写一个直接获取祖父id的函数。

不过,现在大部分php网站,都只会有获取父类的函数,想discuz,ecshop等。获取祖父id,就是不断的获取该id的父id。

thinkphp5如何将表单提交的数据作为条件进行递归查询?

public function fun1($uid)

{

$list = db('table')-where(['rank_id'=$uid])-select();

if(empty($list))return [];

else{

$arr = [];

foreach ($list as $item)

{

$arr = array_merge($arr,$this-fun1($item['id']));

}

return $arr;

}

}

public function fun2($uid,$arr=[])

{

$list = db('table')-where(['rank_id'=$uid])-select();

if(empty($list))return $arr;

else{

$arr = array_merge($arr,$list);

foreach ($list as $item)

{

$arr = $this-fun2($item['id'],$arr);

}

return $arr;

}

}

两个方法,你测试下可用不。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: php递归查询数据结构 php递归算法经典题目
本文地址: https://pptw.com/jishu/3547.html
vb点虐队列添加数据 vb列表框list添加内容 php从缓存查数据库 php从缓存查数据库中的数据

游客 回复需填写必要信息