
正文
php数据库递归 php递归算法经典题目
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PHP 递归函数返回值问题
朋友php数据库递归,php数据库递归你这个函数逻辑有问题
1.
$countsort_sql
=
"SELECT
*
FROM
`{$db_table}newssort`
WHERE
`newssort_pid`
=
'$pid'";
这个的字段newssort_pid,如果第一次$pid可以查询出结果,那么下边
while($countsort_row
=
mysql_fetch_assoc($countsort_result)){
countSort($countsort_row['newssort_pid']);
}
这里的参数$countsort_row['newssort_pid']就是你第一次输入$pid,那么如果按照正常思路就永远循环
所以,我认为这里的countSort($countsort_row['newssort_pid']);中$countsort_row['newssort_pid']应该加以变化,比如+1
2.递归的判断条件if($countsort_number
0)
这个$countsort_number
如果有一次查询结果那么它永远是0,这是不对的。
修改函数如下,希望对你有所帮助。
function
countSort($pid)
{
global
$countsort_number;
$countsort_sql
=
"SELECT
*
FROM
`{$db_table}newssort`
WHERE
`newssort_pid`
=
'$pid'";
$countsort_result
=
mysql_query($countsort_sql)
or
die('数据库查询失败,请与管理员联系!');
$num=mysql_num_rows($countsort_result);
$countsort_number
+=$num;
if(
$num
0)
{
while($countsort_row
=
mysql_fetch_assoc($countsort_result)){
countSort(++$countsort_row['newssort_pid']);
}
mysql_free_result($countsort_result);
}
else
$abc=
$countsort_number;
}
相关问答
Q1: PHP把数据库连接对象放在递归中当参数行么?
你的代码没看明白,因为数据库可以索引,不明白数据库查询为什么还要二分查找,数据库的HASH是最快速的搜索,那我就直接回答:可以把$conn放在变量里面递归,只要不是在递归函数里面再次mysql_connect就不会造成许多连接,至少浪费一点点堆栈空间(内存)。
其次纠正一下:PHP支持全局变量,需要使用global进行申明,例如:
?php
$a=1;
f();
echo $a;
function f(){
global $a;
$a++;
}
?
最后给你说个轻松的,mysql的连接符$conn,其实在所有的mysql函数里面是可以省略的,如果你只有一个连接,这个参数完全可以不用,例如:
?php
mysql_connect('127.0.0.1','root','123456');
f();
mysql_close();
function f(){
$sql='select ....';
$res=mysql_query($sql);//可以正常执行
$row=mysql_fetch_array($res);
mysql_free_result($res);
}
?
Q2: php与mysql表中如何求递归求和汇总?
function sumShuzi($tree, $updateData = array()) {
$sum = 0;
// foreach($tree as $key = $item) { //这句话有毒
foreach($tree as $key = $item) {
if(isset($item['children'])) {
$oldPshuzi = $tree[$key]['Pshuzi'];
$tree[$key]['Pshuzi'] = sumShuzi($item['children'], $updateData);
if($oldPshuzi != $tree[$key]['Pshuzi']) {
$updateData[$item['id']] = array($tree[$key]['Pshuzi'], $tree[$key]['Pname_ch']);
}
}
$sum += $tree[$key]['Pshuzi'];
}
return $sum;
}
$tree = json_decode('[{"id":"1","Pid":"0","Pname_ch":"\u6e20\u9053\u90e8","Pshuzi":"1638000","children":[{"id":"4","Pid":"1","Pname_ch":"\u9500\u552e\u4e8c\u90e8","Pshuzi":"895000","children":[{"id":"13","Pid":"4","Pname_ch":"\u5468\u7ecf\u7406","Pshuzi":"28","children":[{"id":"28","Pid":"13","Pname_ch":"\u6e56\u5357","Pshuzi":"158000"},{"id":"35","Pid":"13","Pname_ch":"\u65b0\u7586","Pshuzi":"19000"}]},{"id":"40","Pid":"4","Pname_ch":"\u9648\u7ecf\u7406","Pshuzi":"5000"}]}]}]', true);
//$tree是具有父子关系的数据树
sumShuzi($tree, $updateData);
foreach ($updateData as $id = $item) {
$sql = "update your_table set Pshuzi={$item[0]} where id={$id}";
mysqli_query($db, $sql); //$db是你的数据库连接结果
}
Q3: [PHP][THNIKPHP]如何递归查询数据库
function get_category($id){
$str=array();
//$sql = "select * from biao where id=$id";查询节点php数据库递归,自己写吧
$result = array('id'=,'parent_id'=);//查询结果一个数组格式
if($result){
$str = get_category($result['parent_id']);
$str[]=$result;
}
return $str;
}
}
调用get_category()就行php数据库递归了,$str第一个元素是节点本身php数据库递归,去掉就行php数据库递归了。
Q4: php 几种常用的递归 无限极分类
/**
* 递归实现无限极分类
* @param $array 分类数据
* @param $pid 父ID
* @param $level 分类级别
* @return $list 分好类的数组 直接遍历即可 $level可以用来遍历缩进
*/
function getTree($array, $pid =0, $level = 0){
//声明静态数组,避免递归调用时,多次声明导致数组覆盖
static $list = []; foreach ($array as $key = $value){ //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点
if ($value['pid'] == $pid){ //父节点为根节点的节点,级别为0,也就是第一级
$value['level'] = $level; //把数组放到list中
$list[] = $value; //把这个节点从数组中移除,减少后续递归消耗
unset($array[$key]); //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
getTree($array, $value['id'], $level+1);
}
}
Q5: 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。
关于php数据库递归和php递归算法经典题目的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






