2010-09-21 106 views
0

當循環返回數據庫中的一些返回數據時,我終於得到了一些工作。有人可以請說明這件事情是如何工作的?我只是想了解爲什麼這個工作,沒有別的會。解釋php函數

我特別想知道有關腳本的這些部分:

($i % $rewardsPerRow == 0) 
$i += 1; 
($i % $rewardsPerRow == $rewardsPerRow - 1) 

下面是函數

function displayAvailableRewards() { 
    $sql = db_res("SELECT * FROM `aaa_rewards_list`"); 

    $rewardsPerRow = '3'; 
    $sCode = '<table>'; 
    if (mysql_num_rows($sql) > 0) { 
     $i = 0; 
     while ($row = mysql_fetch_array($sql)) {   
      extract($row);   
      if ($i % $rewardsPerRow == 0) { 
       $sCode.= '<tr>'; 
      }  
      $sCode.= '<td width="200" align="center">'; 
      $sCode.= $row['name'].'<br/>'; 
      $sCode.= '<img src="http://www.huddletogether.com/projects/lightbox2/images/image-2.jpg" height="25" width="35" border="0"><br/>'; 
      $sCode.= $row['desc'].'<br/>Points : '. $row['point_value'];   
      $sCode.= '</td>';   
      if ($i % $rewardsPerRow == $rewardsPerRow - 1) { 
       $sCode.= '</tr>'; 
      }    
      $i += 1; 
     }  
     if ($i % $rewardsPerRow > 0) { 
      $sCode.= '<td colspan="' . ($rewardsPerRow - ($i % $rewardsPerRow)) . '"></td>'; 
     }  
    } else { 
     $sCode.= MsgBox(_t('_rewards_empty_txt')); 
    } 
    $sCode.= '</table>'; 

    $this->addCss('rewards.css'); 
    return $sCode; 
} 

回答

6

%modulus。它返回餘數。如果餘

if ($i % $rewardsPerRow == 0) { 
    $sCode.= '<tr>'; 
} 

檢查執行I/rewardsperrow時爲0,即意味着通過數整除其均勻,它應該移動到下一行。

$i += 1只是短暫的i = i + 1

0

這skript建立了一個小桌子與圖像。 8行後表格將關閉。爲什麼8行?因爲8%3 = 2($i % $rewardsPerRow)和3-1 = 2($rewardsPerRow - 1)。

這個短語($i % $rewardsPerRow == $rewardsPerRow - 1)的意思與$i == 8相同,因爲$rewardsPerRow是一個常數。