2010-09-21 77 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是一个常数。