根据循环计数递增变量

时间:2012-07-12 19:37:20

标签: php loops foreach language-construct

我有一个PHP函数,其中目录中的未定义数量的图像正在输出到浏览器。正在将图像读入对象。我遇到的问题是如何呈现图像。我想把它们放在一个表中,连续四个<td>个单元格。这是代码:

function displayThumbList(){

   $tlist = $this->getThumbList();
   $i = 0;
   $e = 3;
   echo '<table width="400px" border=1><tr>';
   foreach ($tlist as $value) {
    echo "<td width=\"90px\" height=\"50px\"><a href=\"showImage.php?id=".$this->getBaseName($value,$this->thumbPrefix)."\" target=\"imgHolder\"><img class=\"timg\" src=\"thumbnail/".$value."\" alt=\"a\" /></a></td>";
    $_GET['imagefocus'] = $this->getBaseName($value,$this->thumbPrefix);

  //here is where the condition for adding a <tr> tag is evaluated 
  if ($i == $e){
       echo '<tr>';
     }

  $i++; //increments by 1 with each foreach loop
 }
 echo '</table>';
}

第一次$ i(第三次通过foreach循环)等于$ e,该过程按预期添加。每当条件满足时,我需要$ e增加3。

图像数量未定义。如果目录中有21个图像,$ i将增加21次,$ e应增加7次,每增加3个增加3个(3,6,9,12,15等)。

我想我正在寻找基于另一个循环条件的增量(每次达到相等)。有什么想法吗? rwhite35

2 个答案:

答案 0 :(得分:3)

if ($i == $e){
   echo '<tr>';
   $e = $e + 3;
 }

或者,使用modulo,类似

if ($i % 3 == 0)

答案 1 :(得分:0)

你想在$ i == $ e时更新$ e。这个条件已经在你的if语句中使用了。只需添加

$e += 3;

你已经完成了。

if ($i == $e){
   echo '<tr>';
   $e += 3;
 }