циклы — Как я могу сделать эти строки PHP короче?

У меня есть этот цикл в то же время он будет считать результат:

while ($wp_query->have_posts()) : $wp_query->the_post(); $current++; $current2++;

Затем, чтобы вызвать правильный HTML-класс, мне нужно это для моего дизайна:

<div class="span4 <?php if($current == 0) { echo 'first'; } elseif($current == 1) { echo 'second'; } elseif($current == 2) { echo 'first'; } elseif($current == 3) { echo 'second'; } ?>" id="<? echo $current; ?>">

$count начинается с 0 и $count2 из 1. Выходные данные должны быть такими: если 0 = первый, 1 = второй, 2 = первый, 3 = второй и т. д. Как я могу сделать это выражение короче с неограниченным количеством $count? Я надеюсь, что мой вопрос ясен. Спасибо за тех, кто поможет мне здесь.

1

Решение

Если я понимаю, что вы спрашиваете здесь, я думаю, что вы хотите чередовать свои div с «первого» и «второго» классов?

Таким образом, вы можете использовать оператор% modulo (см. http://php.net/manual/en/internals2.opcodes.mod.php)

<div class="span4 <?php echo ($current % 2 === 0 ? 'first' : 'second'); ?>" id="<? echo $current; ?>">
5

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

Если вы просто используете эти имена классов для чередующихся стилей CSS, есть очень элегантный способ сделать это с помощью CSS3

Ваш HTML

<div class="span4" id="<? echo $current; ?>">

И в вашем файле CSS

.span4:nth-child(even) {background: #CCC}
.span4:nth-child(odd) {background: #FFF}

иначе для решения PHP ответ Лиама Уилтшира должен работать хорошо.

источник: CSS четные и нечетные примеры правил

1

Так что вы могли бы использовать mod — лучше всего использовать полный<?php тег для WordPress, если это так.

PHP тест, если число нечетное или четное

    // set up the html clips
if($current % 2 == 0){
$html_clips = 'first';
}else{
$html_clips = 'second';
}
if($current == 0) $html_clips = 'first';
<div class="span4 <?php echo $html_clips ?>" id="<?php echo $current; ?>">
0

попробуй так

<div class="span4
<?php if ($curent%2 == 0){ echo 'first'; }
else {echo 'second';}?> id="<? echo $current; ?>">
0
По вопросам рекламы [email protected]