2010-07-16 75 views
1

我已經嘗試了所有這些工作,只是不能正確計數。循環計數

<?php 
$total = count($u); 
for ($i = 0; $i < $total; $i++) { 
    $j = 0; 
    $s = $database->checkUserPlayedRecent($u[$i]); 
    if (mysql_num_rows($s) > 0){ 
     $j = $j + 1; 
     ?> 
     <tr> 
      <?php echo "<td>$j</td>"; ?> 
      <?php echo "<td>$u[$i]</td>"; ?> 
      <?php echo "<td>$p[$i]</td>"; ?> 
     </tr> 
     <? 
    } 
} 
?> 

我想每次增加$ j,但只能從num_rows得到結果。 最初$ j是$ i + 1,但不會工作,因爲我沒有顯示for循環的每個結果,只有那些返回num_rows的。這裏有幫助嗎?乾杯

+0

將'$ j = 0;'移到外循環之前? – Artefacto 2010-07-16 23:10:40

+0

'$ j = $ j + 1;'是'$ j ++;'的縮寫。我很困惑。你想讓'$ j'等於'mysql_num_rows($ s)',還是讓'$ j'只是你製作的html表格中的行號?如果錶行號,你想在你的for循環聲明位:'for $($ i = 0,$ j = 0; $ i <$ total; $ i ++){}'中放置'$ j = 0;'。 – 2010-07-16 23:15:32

+0

順便說一句我認爲你的代碼有點混亂起來。不要用PHP迴應HTML,並考慮使用控制結構的替代語法:http://php.net/manual/en/control-structures.alternative-syntax.php – 2010-07-16 23:23:39

回答

3
$total = count($u); 
        for ($i = 0; $i < $total; $i++) 
        { 
         $j = 0; 

$ j賦值位於循環內部,所以它每次都設置爲0。只需將它移動到循環之前即可。

$total = count($u); 
        $j = 0; 
        for ($i = 0; $i < $total; $i++) 
        { 
+0

這是瘋狂的,我相信我試過這個! 但它工作,感謝兄弟。 – sark9012 2010-07-16 23:15:10

+0

@Luke,如果有效,接受答案。 :-) – 2010-07-16 23:20:11

0

我會改變你的內心,如果這樣:

    if (mysql_num_rows($s) > 0) 
        { 
         $j = $j + 1; 
         ?> 
         <tr> 
           <?php 
            echo "<td>$j</td>"; 
           ?> 

           <?php 
            echo "<td>$u[$i]</td>"; 
           ?> 
           <?php 
            echo "<td>$p[$i]</td>"; 
           ?> 
         </tr> 
         <? 
        } else { // if no rows returned, hasn't played recently 
         echo "<tr><td>Hasn't Played</td></tr>"; 
        } 

此刻,你不佔任何行返回。此外,您可以通過一次回顯或打印整個內容來避免所有PHP的進出。它足夠可預測,非常簡單。