Задачка для знатоков. Цикл + присвоение тегов

Печать RSS
237

Автор
Пишу, строю и воображаю
0
[i]Столкнулся с проблемой... Решить никак не могу. Прочтите, айда задачка под ваши зубки :-)[i]

Запускаем цикл например от 1 до 999

for($i=1;$i<=999;$i++){
	echo $i."<br>";
}

Вывод будет таким:

1
2
3
4
5
6
7 ... и так до 999...

Как сделать чтобы перед ID 1,5,9,13 и т.п. (то есть начиная с первой и после каждых 4 строк) ставилось например тег <h1>,
Далее, на ID 2, 6, 10, 14 и т.п. (то есть начиная со второй и после каждых 4 строк) ставился тег например <h2>,
Далее, на ID 3, 7, 11, 15 и т.п. (то есть начиная с третьей и после каждых 4 строк) ставился тег например <p>,
Далее, на ID 4, 8, 12, 16 и т.п. (то есть начиная с четвертой и после каждых 4 строк) ставился тег например <span>,


Получится что 1,2,3,4 это один блок, далее, 5,6,7,8 - след блок, 9, 10, 11, 12 - другой блок и т.к.....


Вывод так будет:

<h1>1<br>
<h2>2<br>
<p>3<br>
<span>4<br>

<h1>5<br>
<h2>6<br>
<p>7<br>
<span>8<br>


и так далее...... Кстати, код может обрываться... например количество строк может быть 7 или то количество которое не соответсвует четверкам, и это НОРМАЛЬНО если код будет НАПРИМЕР таким если строк всего 5:


<h1>1<br>
<h2>2<br>
<p>3<br>
<span>4<br>

<h1>5<br>

P.S. Это конечно можно тупо в цикле прописать:
if($i=="1" or $i=="5" or $i=="9" or $i=="13" и т.п....
но это будет банально и код дохреначий будет, потому что цикл большой...
М

Чатланин
0
<?
for($i=1;$i<=999;$i++){
	echo '<h1>'.$i++.'</h1>';
	echo '<h2>'.$i++.'</h2>';
	echo '<p>'.$i++.'</p>';
	echo '<span>'.$i.'</span>';
}
?>
Изменил: Михаил (29.09.2012 / 13:15)
Автор
Пишу, строю и воображаю
0
ingate, а если записей 6 или 7? он доводит их всех до четвертой.... 4,8,12 и т.п.
А

Оранжевые штаны
0
$i % 2 == 0
$i % 3 == 0
$i % 4 == 0
else
Автор
Пишу, строю и воображаю
0
4. Башка, спасибо! а можно ЧУТЬ по подробней как это использовать?
А

Оранжевые штаны
0
<?php
for($i=1;$i<=999;$i++){
  if(!($i % 4)){
    echo "<span>$i</span><br/>";
  }
  elseif(!($i % 3)){
    echo "<p>$i</p><br/>";
  }
  elseif(!($i % 2)){
    echo "<h2>$i</h2><br/>";
  }
  else{
    echo "<h1>$i</h1><br/>";
  }
}
Автор
Пишу, строю и воображаю
0
Башка (29 Сентября 2012 / 21:48)
<?php
for($i=1;$i<=999;$i++){
  if(!($i % 4)){
    echo "<span>$i</span><br/>";
  }
  elseif(!($i % 3)){
    echo "<p>$i</p><br/>";
  }
  elseif(!($i % 2)){
    echo "<h2>$i</h2><br/>";
  }
  else{
    echo "<h1>$i</h1><br/>";
  }
}


и выводится следующее:
a 1
b 2
c 3
d 4
a 5
c 6
a 7
d 8
c 9
b 10
a 11
d 12
a 13 и т.п.

должно везде идти A B C D... поставь перед тегами A B C D... они не по порядку идут
А

Оранжевые штаны
0
<?php
for($i=1, $j=0;$i<=15;$i++, $j++){
  if($j == 0){
    echo "a $i \n";
  }

  elseif($j == 1){
    echo "b $i \n";
  }

  elseif($j == 2){
    echo "c $i \n";
  }

  else{
    echo "d $i \n";
    $j = -1;
  }
}
П

Пацак
0
На мой взгляд, лучше сделать, как во втором сообщении.
<?php 
$i=0; $end=21;
while($i!=$end){
echo 1, $i++, '<br/>';
if($i==$end) break;
echo 2, $i++, '<br/>';
if($i==$end) break;
echo 3, $i++, '<br/>';
//и т.д.
}

?>
М

Чатланин
0
3. ПроХраммист,
<?
$count = 7;

for($i=1;$i<=$count;$i++){
if ($i <= $count) 	echo '<h1>'.$i++.'</h1>';
if ($i <= $count)     echo '<h2>'.$i++.'</h2>';
if ($i <= $count)     echo '<p>'.$i++.'</p>';
if ($i <= $count)     echo '<span>'.$i.'</span>';
}
?>
Изменил: Михаил (30.09.2012 / 12:33)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск