Модуль php в цикле
Я сейчас проверяю, является ли запись в цикле третьей итерацией или нет, со следующим кодом:
<?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
безрезультатно.
Ответы
Ответ 1
Модуль проверяет, что осталось от деления.
Если $i равно 10, 10/2 = 5 без остатка, то модуль $i будет равен 0.
Если $i равно 10, 10/3 = 3 с остатком 1, то модуль $i равен 1.
Чтобы вам было легче отслеживать количество элементов, я начинал бы $i с 1 вместо 0. например
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
Теперь для ответа:
Как я могу проверить, что цикл находится на нем? 2-е, а не третье, я пробовал,
$i % 2 === 0
Ответ 3
Если вы сомневаетесь, напишите фрагмент кода:
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 :
Ответ 4
для каждой третьей итерации, в которой вы нуждаетесь
if ($i % 3 === 0)
если конкретная третья итерация тогда
if ($i === 3)
Ответ 5
Я думаю, что это должно быть:
if ($i % 2 == 0)
Ответ 6
Попробуйте это, нужно работать для каждой третьей итерации:
if ($i % 3 === 0)