我正在尝试为每个div
循环一个班级。
我知道如何获得第一个和最后一个,但无法弄清楚如何迭代1-3(或更多的其他想要扩展它的人)
我有什么:
$cats = get_categories();
// default value
$i = 0;
foreach ($cats as $cat) {
// reset class
$class = '';
if(++$i % 3 == 0) { $class = 'third - '; }
elseif(++$i % 2 == 0) { $class = 'second - '; }
elseif(++$i % 1 == 0) { $class = 'first - '; }
echo $class . $cat->name;
}
但是,当我回显$i
以查看发生了什么时,它每次都会添加值,而不是通过if语句(我认为不会导致它增加数量)
我最终获得了这种输出:
third - cat01
first - cat02
second - cat03
third - cat04
second - cat05
first - cat06
third - cat07
答案 0 :(得分:2)
主要问题是$ i%2 == 0。它应该是$ i%3 == 1. 你必须总是提取模数3并检查0,1和2的结果:
$cats = array('cat1', 'cat2', 'cat3', 'cat4', 'cat5', 'cat6', 'cat7');
$i = 0;
foreach ($cats as $cat) {
if ($i % 3 == 0) { $class = ' first'; }
elseif ($i % 3 == 1) { $class = ' second'; }
elseif ($i % 3 == 2) { $class = ' third'; }
$i++;
echo "\n$class - $cat";
}
输出:
first - cat1
second - cat2
third - cat3
first - cat4
second - cat5
third - cat6
有4个课程也适用:
答案 1 :(得分:0)
在这里查看php foreach循环文档 http://php.net/manual/en/control-structures.foreach.php
您可以像这样使用foreach循环:
foreach ($cats as $key => $cat) {}
$ key将是您的索引。
答案 2 :(得分:0)
您的代码$i
会在每次检查条件时递增,请检查以下代码,
$cats = get_categories();
// default value
$i = 0;
foreach ($cats as $cat) {
// reset class
$class = '';
$i++;//increment outside
if($i % 3 == 0) { $class = 'third - '; }
elseif($i % 2 == 0) { $class = 'second - '; }
elseif($i % 1 == 0) { $class = 'first - '; }
echo $class . $cat->name;
}
输出
first - cat01
second - cat02
third - cat03
first - cat04
second - cat05
third - cat06
first - cat07
否则你使用下面的循环
foreach ($cats as $cat) {
$i++;
if ($i % 3 == 0) { $class = ' third -'; }
elseif ($i % 3 == 1) { $class = ' first -'; }
elseif ($i % 3 == 2) { $class = ' second -'; }
echo $class . $cat->name;
}
mod的计算
multiple of 3 % 3 =0
((multiple of 3)-1) % 3 =2
((multiple of 3)-2) =1
例如
4%3=1
5%3=2
6%3=0
答案 3 :(得分:0)
$sequence = ['first', 'second', 'third'];
for($i = 0; $i < count($cats); $i++)
{
$class = current($sequence) . $cats[$i]->name;
if (next($sequence) === false)
{
reset($sequence);
}
}
你也可以用foreach做同样的事。
foreach ( $cats as $cat )
{
$class = current($sequence) . $cat->name;
if (next($sequence) === false)
{
reset($sequence);
}
}
答案 4 :(得分:0)
我相信只要每n rows
分配一个班级并重复,你就可以在css中实现你想要的东西。
例如,下面的php只是在一个循环中生成一些简单的div元素而没有内联分配的类 - div的颜色(或者你想要应用的任何css规则)由下面的css规则使用{{ 1}}选择器机制 - 这里颜色/样式重复每3个元素,但你可以修改它以容纳不同的重复间隔 - 对于每4个子div的重复,它将是nth-child( 3n + x )
,其中nth-child( 4n + x )
是孩子等
x