我有一个包含6种不同颜色的数组:
$colors = array(
'dd0330',
'e49fca',
'a776a6',
'f7e300',
'f78f1e',
'd12a2f',
);
我有一个循环,我将一些东西存储在一个数组中,我为每个元素添加一个颜色。但阵列可以有比6更多的项目所以当第六种颜色被提出时我希望计数器被重置
这是我尝试过的:
$loop_counter = 0;
if ( $orders->have_posts() ){
while ($orders->have_posts()) : $orders->the_post();
...
$myOrders[] = array( 'name' => $name,
'schedule' => $activiteiten,
'link' => $link,
'color' => $colors[$loop_counter],
'catering' => $catering,
);
...
if($loop_counter = 5){
$loop_counter = 0;
}
$loop_counter++;
endwhile;
}
但这似乎让我的第一个项目成为第一个颜色,而其他第二个项目则成为第二个颜色。
任何人都知道如何重置我的柜台?
非常感谢提前!
答案 0 :(得分:10)
如此接近!
尝试
if($loop_counter == 5)
你需要等价关系,而不是等于
另外,如果您要在if之后使用$ loop_counter ++,那么if应该设置$ loop_counter = -1。
答案 1 :(得分:3)
你可以做得更好。
$myOrders[] = array( 'name' => $name,
'schedule' => $activiteiten,
'link' => $link,
'color' => $colors[$loop_counter % 6],
'catering' => $catering,
);
%
为您提供余额,您无需检查并重置计数器。
如果可以更改颜色数量,请使用
$colors_num = count($colors);
// ...
'color' => $colors[$loop_counter % $colors_num],
// ...
答案 2 :(得分:2)
您可以创建ArrayIterator
,而不是将最大值硬编码到if语句中,例如
$it = new ArrayIterator($colors);
if ( $orders->have_posts() ){
while ($orders->have_posts()) : $orders->the_post();
//...
if(!$it->valid()){
$it->rewind();
}
$myOrders[] = array( 'name' => $name,
'schedule' => $activiteiten,
'link' => $link,
'color' => $it->current(),
'catering' => $catering,
);
//...
$it->next();
endwhile;
}
答案 3 :(得分:1)
$loop_counter++;
if($loop_counter == 6){
$loop_counter = 0;
}
可以尝试这个
答案 4 :(得分:1)