1

我这里有这个 PHP 脚本

$z = range(2, 123);
echo '<table width="100%">';
foreach($z as $x){

echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}

echo '</table>';

我想要做的是在表格行中获取 6 个项目,然后是一个新行......我该怎么做?

谢谢,J

4

6 回答 6

2

这里需要取模运算符。您可以除以并计算余数。每次剩下的时候0你添加一个新行:

$z = range(2, 123);
echo '<table width="100%">';
echo '<tr>';
$cnt = 2;
foreach($z as $x){
if ( ($cnt - 2) % 6 == 0 ) {
echo '</tr><tr>';
}
$cnt++;
echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}
echo '</tr>';
echo '</table>';
于 2013-02-12T15:31:54.920 回答
2

如果您希望您的代码干净整洁,请始终将数据操作与演示代码分开。因此,尽可能多地将逻辑从输出移开。
所以,首先准备你的数据

<?
$data = range(2, 123);
$data = array_chunk($data, 6);
?>

然后输出

<table width="100%">
<? foreach($data as $chunk): ?>
  <tr>
<? foreach($chunk as $val): ?>
    <td>
      <a href="/<?=$val?>/"><img src="/<?=$val?>/5.jpg" width=200></a>
    </td>
<? endforeach ?>
  </tr>
<? endforeach ?>
</table>
于 2013-02-12T16:07:51.223 回答
1

尝试这样的事情:

$z = range(2, 123);
echo '<table width="100%"><tr>';
foreach($z as $x){

    if( ($x - 2) % 6 == 0 ) // Minus 2 because you don't start at 0 but at 2.
    {
        echo '</tr><tr>';
    }
    echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}

echo '</tr></table>';

%是一个称为模的数学函数。更多信息可以在这里找到。

于 2013-02-12T15:32:56.020 回答
0

使用计数器变量。

$z = range(2, 123);

$current_result=0;

echo '<table width="100%">';
echo '<tr>';
foreach($z as $x){
if ($current_result++ % 6 == 0) echo '</tr><tr>';

echo '<td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td>';
}
echo '</tr>';
echo '</table>';`
于 2013-02-12T15:34:04.213 回答
0

好吧,一开始range(2, 123)会产生 122 个数字,所以你想要的是range(1, 6).

然后您需要修复您的脚本以将每个表格单元格包含在一个行元素中,因此您的脚本变为:

$z = range(1, 6);
echo '<table width="100%">';

foreach($z as $x){
  echo '<tr><td><a href="http://www.mysite.net/' . $x . '/"><img src="http://www.mysite.net/' . $x . '/5.jpg" width=200></a></td></tr>';
}

echo '</table>';

Range 是一种循环 6 次的奇怪方式——您可能只想使用一个字符串来构建表格并使用 循环while,然后一次性输出整个表格。

编辑
似乎我可能错过了一点 - 如果您尝试在范围内循环 6 次,那么模方法就是您想要的,尽管我关于表格行元素的观点仍然需要,否则您不会产生有效的 HTML。

于 2013-02-12T15:37:23.443 回答
0

只需在循环内使用任何变量进行计数。增加它并检查你的价值。例如

$cnt++;
if ($cnt >= 6) {
  $cnt = 0;
  echo "</tr><tr>";
}

并且不要使用 foreach。用于从 2 到 123

于 2013-02-12T15:41:24.877 回答