关于一个循环递归的问题,如何通过一个表里的值查询他自己的id

先上表结构

关于一个循环递归的问题,如何通过一个表里的值查询他自己的id0

现在想要通过pid查询lessiontypeid,在通过lessiontypeid查出这一条信息,最后返回全部查询信息。

下面的我写的一个递归

问题在于 他每循环一次就要输出一次结果并且循环继续

所以

1、我不能用retuen:否则跳出循环。

2、我要在控制器里调用这个函数,获取他返回的结果集,也不能用var_dump之类的函数

用的是ic框架,小弟求大神们指点一二!

public function getlessiontypearray($pid = 0)
{
//getlessiontype 输入条件获取上表的全部信息
$all_t = $this -> course_model -> getlessiontype(array(‘pid’=>$pid));
if($all_t){
foreach ($all_t as $k => $v) {
//将lessiontypeid取出来作为pid的条件
$ltid = $all_t[$k][‘lessiontypeid’];
$all = $this -> course_model -> getlessiontype(array(‘pid’=>$ltid));
if($all){
//需要的结果
var_dump($all);
}
//回调自己
$res = $this -> getlessiontypearray($ltid);
}
}
}

回复讨论(解决方案)

感觉这么写很矛盾。。。。

要是有好的想法也可以提出来

嗯,我想到了这个,你可以试一下。

$query = mysqli_query(“select lessiontypeid from table where pid = 1”);

while($res = mysqli_fetch_array($query)) {

$sql = “select * from table where lessiontypelessiontypeid’]}'”;

$query2 = mysqli_query($sql);

while ($row = mysqli_fetch_array($query2)) {

$rows[] = $row;

}

}

这个while循环最后也是要retuen的呀 跳出来就不循环了

返回的值需要按父子关系排列么?不需要的话直接select * from table where pid >= $pid不就都出来了么。或者先用这条sql查出符合条件的数据再进行整理。

返回的值需要按父子关系排列么?不需要的话直接select * from table where pid >= $pid不就都出来了么。或者先用这条sql查出符合条件的数据再进行整理。

事实是需要的 pid存的就是他父集的id!

返回的值需要按父子关系排列么?不需要的话直接select * from table where pid >= $pid不就都出来了么。或者先用这条sql查出符合条件的数据再进行整理。

事实是需要的 pid存的就是他父集的id!

如果要是必须按照你的做法来做的话,就用 引用传递吧

参考:
http://www.php.net/manual/zh/language.references.pass.php

除非在递归过程中直接输出,否则返回是必须的

可以设置一个全局变量,把输出的写入这个变量。

递归执行后,就可以读取这个变量了,例如

除非在递归过程中直接输出,否则返回是必须的

是的 感觉思路有问题,不能这样写。。。

可以设置一个全局变量,把输出的写入这个变量。

递归执行后,就可以读取这个变量了,例如

试过了 不行,因为是在ci框架里。我想想其他的解决办法吧,感谢!

和框架应该没什么关系吧,框架内也可以自定义方法调用的。

需求是

和框架应该没什么关系吧,框架内也可以自定义方法调用的。

额 之前有点蒙

Posted in 未分类