所以这是我正在寻找的模式
在有限集中,我想要检索一组的前2个值,然后是另一个集合的接下来的4个值,然后是第一个集合的2个,然后是另一个集合的4个,依此类推。
抓住2 |抢4 |抢2 |抢4 ...
$count = 0;
foreach ($listing as $entry){
if ($count % 4 == 0){
// add to 4-item set
} else if ($count % 2 == 0){
// add to 2-item set
}
$count++;
}
我的困惑是,当$ count%4 = 0时,$ count%2也将= 0。
如果我没有达到错误的模数情况(因为对于任何可被4整除的任意数字都是正确的),我应该通过检查第一,如果$ count%4 == 0?
答案 0 :(得分:1)
不正确
当计数为2,8,14等时,你应该抓住设置1
目前,当你的数量是2,4,8等时,你会抓住它
当计数为6,12,18等时设置2
目前它的数量是4,8,12等
条件1是((count-2) % 6) == 0
条件2是(count != 0) && (count % 6) == 0
这是应该有用的东西
$count = 0;
foreach ($listing as $entry){
if ($count < 2){
// add to 2-item set
} else {
// add to 4-item set
}
if ($count < 6) $count++;
else $count = 0;
}
或者,如果您想一次抓取2/4件物品:
$count = 0;
foreach ($listing as $entry){
if ($count == 2){
// add 2 items to 2-item set
} elseif ($count == 6) {
// add 4 items to 4-item set
}
if ($count < 6) $count++;
else $count = 0;
}
答案 1 :(得分:1)
如果我做对了,你所希望的发行实际上是:
A A, B B B B, A A, B B B B, A A, B B B B, ...
所以你想将它们分组为六 ,然后将前两个选为A,将其他四个分为B:
if ($count % 6 < 2){
// add to 2-item set
}
elseif ($count % 6 < 6){
// add to 4-item set
}
将其拆分为if / elseif将确保这些项目最终只能在一个项目中结束。 < n
分布的% 6
比较意味着:
$count % 6 = 0 1 2 3 4 5 0
if = <2 <2 <6 <6 <6 <6 <2
basket = A A B B B B A
答案 2 :(得分:0)
由于您指定的确切原因,这不起作用。
可以使这个工作的方法是