在循环访问来自数据库的一些返回数据时,我终于得到了一些工作。有人可以解释一下这件事是如何起作用的吗?我只是想明白为什么这样有效,没有别的。
我特别想知道脚本的这些部分:
($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;
}
答案 0 :(得分:6)
%
是modulus。它返回余数。
if ($i % $rewardsPerRow == 0) {
$sCode.= '<tr>';
}
检查执行i / rewardsperrow时的余数是否为0.这意味着它可以均匀地整除,并且应该移动到下一行。
$i += 1
只是i = i + 1
答案 1 :(得分:0)
这个skript构建了一个带有图像的小桌子。在8行之后,表格将被关闭。为什么8排?因为8%3 = 2($i % $rewardsPerRow
)和3-1 = 2($rewardsPerRow - 1
)。
此词组($i % $rewardsPerRow == $rewardsPerRow - 1
)的含义与$i == 8
相同,因为$rewardsPerRow
是常量。