看图说话。
假设上面是一个表 。。
表里面 有 信息id 和用户uid 和特定的pid
怎么在loop循环调用变量的时候 判断 其他条信息的pid = 当前信息的id (红框所示)
我在调用的时候 这么判断
{loop $list}......{if $id == $pid}.......{/if} .....{/loop}
就被判断成当前的这条信息id是否和pid相同了。关键是pid和id 肯定不会在一条id的信息数据里 pid是针对id的
代码我是这样写的
{loop $list}$id - $uid -$pid
{/loop}
显示的结果是
1 -8 - 25
2 -3 - 36
3 -12 -1
这没有错 输出正确
我想要的结果是 第三条pid等于 第一条的id 让他显示在第一条下面
怎么写代码啊 求解脱
回复讨论(解决方案) 其实是自己编写了个留言。
其中的id就是 留言的信息id 用于删改信息;其中的uid就是留言的作者id;还有留言内容、时间等字段就不说了。
最重要的就是pid,是自动生成的 ,就是给第几条信息回复的,
我想比如给信息id为1的信息留言,让他显示在这条信息下面 。不知道怎么操作。哎
两个数组,一个按照id排序的数组a(key值是id),一个按照pid排序的数组b(key值是pid)。
a数组key值:1、2、3、6、8。。。
b数组key值:1、3、34、35.。。
每次从两个数组最开始位置取数据,a指针取到1输出,然后取b的第一个,也是1,输出。再取a指到了2输出,b获取发现是3,不输出。再取a 3输出,再次看b,发现也是3输出。
数组排序就用php自带的方法复杂度大概o(nlgn),遍历两个数组复杂度o(n)。
两个数组,一个按照id排序的数组a(key值是id),一个按照pid排序的数组b(key值是pid)。
a数组key值:1、2、3、6、8。。。
b数组key值:1、3、34、35.。。
每次从两个数组最开始位置取数据,a指针取到1输出,然后取b的第一个,也是1,输出。再取a指到了2输出,b获取发现是3,不输出。再取a 3输出,再次看b,发现也是3输出。
数组排序就用php自带的方法复杂度大概o(nlgn),遍历两个数组复杂度o(n)。
每条信息包含id和pid 这个循环是不错 但是会在key为id的时候 把pid的也读取了
{loop $list $val}评论{$val['id']}{loop $list $val1}{if $val['id']==$val1['pid']}回复评论{$val['id']}的评论{/if}{/loop}{/loop}
没测试过,你看看行不行
$sqlstr = select * from table;$query = mysql_query($sqlstr) or die(mysql_error());while($thread=mysql_fetch_assoc($query)){ $result[] = $thread;}foreach($result as $key=>$val){ if(isset($ret[$val['pid'])){ array_push($ret[$val['pid']], $val); }else{ $ret[$val['pid']] = array($val); }}print_r($ret);