2013-07-08 92 views
-3

基本上,我试图遍历所有帖子并找到其合适的标签。 $ id变量是返回的所有帖子ID的数组。因此,第一个for循环应该为帖子找到所有标签,并且如果没有任何该帖子将标签设置为0(对于$ post_tags ['这是帖子ID'])通过多维关联数组循环并输出结果

看起来似乎如果没有帖子的标签,它会简单地打印出“没有指定的标签”(如预期的那样)。但是,似乎正在发生的事情是,打印的标签是来自相应后期PLUS的所有标签,返回的是之前帖子的标签。它似乎增加了已经返回的内容。

我真的不明白为什么这样做,并考虑到没有错误提出我觉得很难解决。任何帮助或指导将不胜感激!

if($stmt = $mysqli->prepare("SELECT username, avatar FROM members WHERE id = ? LIMIT 1")){       
// Get the posts tags 
if($tgs = $mysqli->prepare("SELECT tag FROM tags WHERE post_id = ?")){ 
    for($i = 0; $i < count($id); $i++){ 
     $tgs->bind_param('i', $id[$i]); 
     $tgs->execute(); 
     $tgs->store_result(); 
     $tgs->bind_result($tag); 
     while($tgs->fetch()){ 
      $tags[] = $tag; 
     } 
     if($tgs->num_rows > 0){ 
      $post_tags[$id[$i]] = $tags; 
     }else{ 
      $post_tags[$id[$i]] = 0; 
     } 
    } 
    $tgs->close(); 
    for($i = 0; $i < count($id); $i++){    
     $stmt->bind_param('i',$by[$i]); 
     $stmt->execute(); 
     $stmt->store_result(); 
     $stmt->bind_result($username, $avatar); 
     $stmt->fetch(); 
     echo '<ul class="f_ul_subject" style="margin-top:3px"> 
        <li class="f_cat_subject" style="font-size:10px;line-height:12px;">'; 
          for($j = 0; $j < count($post_tags[$id[$i]]); $j++){ 
           if($post_tags[$id[$i]] != 0){ 
            echo '<a class="post_tag" href="http://localhost/Site/NetPerry/forum/search.php?v=' . $post_tags[$id[$i]][$j] . '&amp;tags=true"> 
              <span>' . $post_tags[$id[$i]][$j] . '</span> 
             </a>'; 
           }else{ 
            echo 'No specified tags'; 
           } 
          } 
        echo '</li> 
       </ul>              
      </li>'; 
    } 
} 

}

+0

'$标签[] = $标签;'是一个问题 –

+1

当然,太本地化问题,“发现我的错误我码”。 –

+0

感谢您的回复,它让我走向了正确的方向,现在看起来很有效。尽管没有义务回复,但如果您觉得“找到我的代码中的错误”对于本网站来说是合适的,那么您没有任何帮助。虽然,谢谢你,你做到了。 – iyop45

回答

1

$tags[] = $tag;被填满阵列而没有排空。这就是标签不断堆积的原因。您可以通过声明数组空解决此之前,取环,就像这样:

$tags = array(); 
while($tgs->fetch()){ 
... 
+0

我想知道为什么这个答案被接受,因为它不会有任何帮助 –

+0

@YourCommonSense在意详细说明吗?我不明白为什么 – thibauts

+0

嗯可能是我错了。我不认为每个帖子都会有明确的查询 –