Heim >Backend-Entwicklung >PHP-Tutorial >哪位看下这个循环嵌套数组有误吗?
function get_number_list($cat_id){ $sql=$GLOBALS['db']->query("select * from ".$GLOBALS['db']->table('dept_category')." order by sort"); while($row=$GLOBALS['db']->fetch_array($sql)){ if($row){ $result=$GLOBALS['db']->query("select * from ".$GLOBALS['db']->table('number')." where dept=".$row['cat_id']." and cat_id='$cat_id' order by sort"); while($rows=$GLOBALS['db']->fetch_array($result)){ if($rows){ $number_show[] = array( 'id' => $rows['id'], 'title' => $rows['title'], 'user' => $rows['username'] ); } } $cat_name[]=array( 'sort' => $row['sort'], 'cat_name' => $row['cat_name'], 'topid' => $number_show ); } } return $cat_name; }
<table width="99%" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> {foreach from=$dept_list name=dept_list item=dept} <tr bgcolor="#FFFFFF"> <td height="25" colspan="2" class="bumen"> {$dept.cat_name}</td> </tr> {foreach from=$dept.topid item=number} <tr bgcolor="#FFFFFF"> <td width="46%" height="25" align="center">{$number.user}</td> <td width="54%" align="center">{$number.title}</td> </tr> {/foreach} {/foreach} </table>
因为你number_show没有清空,第一个记录获取到的一直在,所以后面就都有了。
另外
while($row=$GLOBALS['db']->fetch_array($sql)){ if($row){
因为你number_show没有清空,第一个记录获取到的一直在,所以后面就都有了。
function get_number_list($cat_id){ $sql=$GLOBALS['db']->query("select * from ".$GLOBALS['db']->table('dept_category')." order by sort"); while($row=$GLOBALS['db']->fetch_array($sql)){ if($row){ $result=$GLOBALS['db']->query("select * from ".$GLOBALS['db']->table('number')." where dept=".$row['cat_id']." and cat_id='$cat_id' order by sort"); while($rows=$GLOBALS['db']->fetch_array($result)){ if($rows){ $number_show[] = array( 'id' => $rows['id'], 'title' => $rows['title'], 'user' => $rows['username'] ); } } $cat_name[]=array( 'sort' => $row['sort'], 'cat_name' => $row['cat_name'], 'topid' => $number_show ); unset($number_show); } } return $cat_name; unset($cat_name); }利用unset对数组进行清空。
谢谢两位的回答