Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PHP - Вывод значений до и после каждых n элементов

56K
28 января 2010 года
AlexWeb
2 / / 28.01.2010
Здравствуйте. Помогите пожалуйста.
За помощью обращаюсь редко, но если возникает проблема, то я стараюсь самостоятельно найти решение. В данном случае уже просто голову сломал :(

У меня следующая проблема:
Сделал скрипт генерирующий HTML таблицу с числами.
 
Код:
<?php
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]

Буду очень благодарен за помощь!
253
28 января 2010 года
Proger_XP
1.5K / / 07.08.2004
Так, а в чём проблема? Есть же оператор %, который возвращает остаток от деления. Ну и делаешь как-то так:
Код:
<?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>";
?>


p.s: приятно читать нормально оформленный код.
56K
28 января 2010 года
AlexWeb
2 / / 28.01.2010
Цитата: Proger_XP
Так, а в чём проблема? Есть же оператор %, который возвращает остаток от деления. Ну и делаешь как-то так:
Код:
<?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>";
?>


p.s: приятно читать нормально оформленный код.



Спасибо, все ок! ;)

274
28 января 2010 года
Lone Wolf
1.3K / / 26.11.2006
1. что-то не понимаю зачем для шага 1. использывать range
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>";
?>
253
28 января 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
2. Proger_XP - пока писал пост ты уже исправил...


Ага, я о чём-то своём думал, пока писал :)

Кстати, можно сделать действительно без range(), что эффективнее с точки зрения производительности да и вообще лучше читается.

 
Код:
...
for ($index = 1; $index <= 10; $index++) {
  ...
}
...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог