циклы — Как создать & quot; 122112211221 & quot; серия в переполнении стека

Мне нужно использовать $counter в моем цикле, который возвращает серию, как это:

1 2 2 1 1 2 2 1

К сожалению, я не очень хорош в математике, что бы я ни пытался зайти в тупик.
это последнее, что я попробовал.

$counter = 0;

while( statement ) {
++$counter;

// Making sure the second element is loaded
if( $counter > 2 )
$twoloaded = true;

if( $counter >= 2 )
--$counter;

echo '<article class="post post-style-' . $counter . '"> ....... </article>';
}

В конце мне нужно вывести HTML, как это:

<article class="post post-style-1">
...
</article>

<article class="post post-style-2">
...
</article>

<article class="post post-style-2">
...
</article>

<article class="post post-style-1">
...
</article>

<article class="post post-style-1">
...
</article>

<article class="post post-style-2">
...
</article>

1

Решение

Общий подход:

$pattern = [ 1, 2, 2, 1 ];   // or array( 1, 2, 2, 1 ); for PHP < 5.4
$idx = 0;

while ( expression ) {
$number = $pattern[ $idx ++ % count( $pattern ) ];
}
5

Другие решения

Как насчет наличия $ повторяемой переменной. Вы можете использовать его, чтобы проверить, повторяется ли 1 или 2 перед переключением.

<?php

$counter = 1;
$repeated = 1;

while(true) {

print '<article class="post post-style-' . $counter . '"> ....... </article>' . "\n";

if($repeated == 2) {

if($counter < 2) {

$counter++;
}
else if ($counter == 2) {

$counter--;
}

$repeated = 1;
}
else {

$repeated++;
}
}

?>
1

По вопросам рекламы [email protected]