我这里有这个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个项目,然后是新行...我该怎么做?
谢谢, Ĵ
答案 0 :(得分:2)
此处modulo operator进来。您可以划分并计算余数。每当余数为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>';
答案 1 :(得分: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>
答案 2 :(得分: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>';
%
是一个名为modulo的Math函数。可以找到更多信息here。
答案 3 :(得分: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>';`
答案 4 :(得分: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。 / p>
答案 5 :(得分:0)
只需使用任何变量来计算内部循环。增加它并检查你的价值。 例如
$cnt++;
if ($cnt >= 6) {
$cnt = 0;
echo "</tr><tr>";
}
不要使用foreach。用于2到123