Я сейчас проверяю, является ли запись в цикле третьей итерацией или нет, со следующим кодом:
<?php for ($i = 0; $i < count($category_news); $i++) : ?> <div class="grid_8"> <div class="candidate snippet <?php if ($i % 3 == 2) echo "end"; ?>"> <div class="image shadow_50"> <img src="<?php echo base_url();?>media/uploads/news/<?php echo $category_news[$i]['url']; ?>" alt="Image Preview" width="70px" height="70px"/> </div> <h5><?php echo $category_news[$i]['title']?></h5> <p><?php echo strip_tags(word_limiter($category_news[$i]['article'], 15)); ?></p> <?php echo anchor('/news/article/id/'.$category_news[$i]['news_id'], '>>', array('class' => 'forward')); ?> </div> </div> <?php if ($i % 3 == 2) : ?> </li><li class="row"> <?php endif; ?> <?php endfor; ?>
Как я могу проверить, является ли цикл вторым, а не его третьей итерацией?
Я пробовал $i % 2 == 1
безрезультатно.
Модуль проверяет, что осталось от деления.
Если $ i равно 10, 10/2 = 5 без остатка, то модуль $ i равен 0.
Если $ i равно 10, 10/3 = 3 с остатком 1, то модуль $ i равен 1.
Чтобы вам было легче отслеживать количество элементов, я начинал бы $ i с 1 вместо 0. eg
for($i=1; $i <= $count; $i++) if($i % 2 == 0) echo 'This number is even as it is divisible by 2 with no leftovers! Horray!';
Надеюсь, это понятно. Шай.
Теперь для ответа:
Как я могу проверить, что цикл – это 2-й вопрос, а не третий, я пробовал,
$i % 2 === 0
Если есть сомнения, напишите фрагмент кода :
for ($j = 1; $j < 4; $j++) { for ($k = 0; $k < $j; $k++) { echo "\n\$i % $j == $k: \n"; for ($i = 0; $i < 10; $i++) { echo "$i : "; if ($i % $j == $k) { echo "TRUE"; } echo " \n"; } } }
Вот результат. Используйте его, чтобы выяснить, что вам нужно использовать:
$i % 1 == 0: 0 : TRUE 1 : TRUE 2 : TRUE 3 : TRUE 4 : TRUE 5 : TRUE 6 : TRUE 7 : TRUE 8 : TRUE 9 : TRUE $i % 2 == 0: 0 : TRUE 1 : 2 : TRUE 3 : 4 : TRUE 5 : 6 : TRUE 7 : 8 : TRUE 9 : $i % 2 == 1: 0 : 1 : TRUE 2 : 3 : TRUE 4 : 5 : TRUE 6 : 7 : TRUE 8 : 9 : TRUE $i % 3 == 0: 0 : TRUE 1 : 2 : 3 : TRUE 4 : 5 : 6 : TRUE 7 : 8 : 9 : TRUE $i % 3 == 1: 0 : 1 : TRUE 2 : 3 : 4 : TRUE 5 : 6 : 7 : TRUE 8 : 9 : $i % 3 == 2: 0 : 1 : 2 : TRUE 3 : 4 : 5 : TRUE 6 : 7 : 8 : TRUE 9 :
для каждой третьей итерации вам нужно
if ($i % 3 === 0)
если определенная третья итерация тогда
if ($i === 3)
Я думаю, это должно быть:
if ($i % 2 == 0)
Попробуйте это, нужно работать на каждую третью итерацию:
if ($i % 3 === 0)