PHP - Вывод значений до и после каждых n элементов
За помощью обращаюсь редко, но если возникает проблема, то я стараюсь самостоятельно найти решение. В данном случае уже просто голову сломал :(
У меня следующая проблема:
Сделал скрипт генерирующий HTML таблицу с числами.
Код:
<?php
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $mynum) {
print "<td>".$mynum."</td>";
}
print "</tr></table>";
?>
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $mynum) {
print "<td>".$mynum."</td>";
}
print "</tr></table>";
?>
Как сделать так, что бы теги <tr></tr> выводились до и после каждых 3 элементов?
Т.е. сейчас у нас генерируется HTML таблица с числами:
[HTML]
<table border='1'><tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr></table>
[/HTML]
А нужно, что бы было так:
[HTML]
<table border='1'>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr>
<td>9</td>
<td>10</td>
... и т.д.
</tr>
</table>
[/HTML]
Буду очень благодарен за помощь!
Код:
<?php
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $index => $mynum) {
if (($index + 1) % 3 == 0) {
print "</tr><tr>";
}
print "<td>".$mynum."</td>";
}
print "</tr></table>";
?>
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $index => $mynum) {
if (($index + 1) % 3 == 0) {
print "</tr><tr>";
}
print "<td>".$mynum."</td>";
}
print "</tr></table>";
?>
p.s: приятно читать нормально оформленный код.
Цитата: Proger_XP
Так, а в чём проблема? Есть же оператор %, который возвращает остаток от деления. Ну и делаешь как-то так:
p.s: приятно читать нормально оформленный код.
Код:
<?php
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $index => $mynum) {
if (($index + 1) % 3 == 0) {
print "</tr><tr>";
}
print "<td>".$mynum."</td>";
}
print "</tr></table>";
?>
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $index => $mynum) {
if (($index + 1) % 3 == 0) {
print "</tr><tr>";
}
print "<td>".$mynum."</td>";
}
print "</tr></table>";
?>
p.s: приятно читать нормально оформленный код.
Спасибо, все ок! ;)
2. Proger_XP - пока писал пост ты уже исправил... ;)
я бы делал так(cохраняю range ибо малоли для чего он нужен топикстатеру) но и это довольно криво
Код:
<?php
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $index => $mynum) {
print "<td>".$mynum."</td>";
if (($index + 1) % 3 == 0)
print "</tr><tr>";
}
}
print "</tr></table>";
?>
print "<table border='1'><tr>";
$myrandnum = range(1,10);
foreach($myrandnum as $index => $mynum) {
print "<td>".$mynum."</td>";
if (($index + 1) % 3 == 0)
print "</tr><tr>";
}
}
print "</tr></table>";
?>
Цитата:
2. Proger_XP - пока писал пост ты уже исправил...
Ага, я о чём-то своём думал, пока писал :)
Кстати, можно сделать действительно без range(), что эффективнее с точки зрения производительности да и вообще лучше читается.
Код:
...
for ($index = 1; $index <= 10; $index++) {
...
}
...
for ($index = 1; $index <= 10; $index++) {
...
}
...