我有一个数组,里面有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;
}
但这似乎让我的第一件衣服有了第一种颜色,其他的都有了第二种颜色。
有人知道我如何重置计数器吗?
非常感谢!
太接近了!
尝试
if($loop_counter == 5)
你需要一个等价关系,而不是一个等价的
此外,如果要在if之后使用$loop_counter++,则if应设置$loop_unter=-1。
你可以做得更好。
$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],
// ...
您可以创建一个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;
}
$loop_counter++;
if($loop_counter == 6){
$loop_counter = 0;
}
可以尝试这个
PHP数组函数reset()专门用于此目的。
if ($loop_counter == 6) {
reset($colors);
}
这将把数组指针重置为第一个元素。