2010-09-21 6 views
0

J'ai finalement trouvé quelque chose à faire quand je parcourais certaines données renvoyées de la base de données. Quelqu'un peut-il expliquer s'il vous plaît exactement comment cette chose fonctionne? Je veux juste comprendre pourquoi cela a fonctionné et rien d'autre ne le ferait.Explication de la fonction php

Je voudrais surtout savoir sur ces portions de script:

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

Voici la fonction

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; 
} 

Répondre

6

% est modulus. Il renvoie le reste.

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

vérifie si le reste lorsque vous faites i/rewardsperrow est 0. Cela signifie que son divisible par ce nombre de façon uniforme et il devrait passer à la ligne suivante.

$i += 1 est juste court pour i = i + 1

0

ce skript construit une petite table avec des images. et après 8 lignes, la table sera fermée. pourquoi 8 rangs? parce que 8% 3 = 2 ($i % $rewardsPerRow) et 3-1 = 2 ($rewardsPerRow - 1).

Cette expression ($i % $rewardsPerRow == $rewardsPerRow - 1) signifie la même chose que $i == 8 parce que $rewardsPerRow est une constante.