当前位置: 代码迷 >> PHP >> 何位看下这个循环嵌套数组有误吗
  详细解决方案

何位看下这个循环嵌套数组有误吗

热度:203   发布时间:2016-04-28 18:53:36.0
哪位看下这个循环嵌套数组有误吗?
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">&nbsp;{$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没有清空,第一个记录获取到的一直在,所以后面就都有了。
------解决方案--------------------
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对数组进行清空。
  相关解决方案