PHP中,多重for,if嵌套,结果为第二个循环只能执行一次

如附图,我创建了一个test表pid==0,为父级,一共3个pid==1,2,3的为子级,一共9个我希望父级与子级通过id与pid关联,然后遍历出表格,代码如下<?php... 如附图,我创建了一个test表pid==0,为父级,一共3个pid==1,2,3的为子级,一共9个我希望父级与子级通过id与pid关联,然后遍历出表格,代码如下<?php $db = new mysqli('localhost','root','chenzeshu8','workbase'); $db->set_charset('UTF8'); $query="select * from test"; $query2="select * from test"; $re = $db->query($query); $re2 = $db->query($query2); echo "<table>"; for($i=1;$row = $re->fetch_assoc();$i++){ //第一次遍历TEST表 if($row['pid']==0){ //在第一次结果中,筛选出父级内容 echo "<tr>"; echo "<td>".$row['id']."</td>"; echo "<td>".$row['name']."</td>"; echo "<td>".$row['pid']."</td>"; echo "</tr>"; for($m=1;$row2 = $re2->fetch_assoc();$m++){ //第二次遍历TEST表 if($row2['pid']==$row['id']){ //在第一次结果中,筛选出父级相对应的子级 echo "<tr>"; echo "<td>".$row2['id']."</td>"; echo "<td>".$row2['name']."</td>"; echo "<td>".$row2['pid']."</td>"; echo "</tr>"; } } } } echo "<table>";------------------------------------------------以上代码,pid==2和==3的子级无法遍历出来,请问有高手能告知为什么吗~~感激不尽!
算了,我还是用回foreach吧,主要是搞不明白为什么for 不行
展开
 我来答
匡匡干
2016-08-02 · TA获得超过420个赞
知道小有建树答主
回答量:319
采纳率:0%
帮助的人:268万
展开全部
看了下fetch_assoc()的原理,是返回一行,然后将指针移到下一行,你在第一次循环的时候已经把$re2的指针移到了最后,第二遍循环的当然无法进入里面的for循环了。你可以在里面for循环上面加一句$re2->data_seek(0);重置下指针的位置,这样就没问题了,其实这个跟for和foreach没多大关系,只是fetch_assoc()没明白如何使用而已。望采纳~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式