这就是我要找的模式
在有限集中,我想为一个集合检索前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.
那么,通过检查first (如果$count%4 == 0 ),我是否应该安全地不到达模数错误的情况(因为对于任何可被4整除的任意数,两者都是正确的)?
发布于 2011-05-10 01:08:30
如果我做得对,你想要的分发实际上是:
A A, B B B B, A A, B B B B, A A, B B B B, ...因此,您想将它们分组到6中,然后选择前两个被晒成的A,其余的四个放到B中:
if ($count % 6 < 2){
// add to 2-item set
}
elseif ($count % 6 < 6){
// add to 4-item set
}将其拆分为if/ Splitting将确保项目仅在其中一项中结束。< 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发布于 2011-05-10 01:06:44
不正确
当计数是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;
}发布于 2011-05-10 01:10:33
因为你指定的确切原因,这是行不通的。
要使它发挥作用的方法是:
https://stackoverflow.com/questions/5944107
复制相似问题