PHP使数组在到达最后一项时返回到0


PHP make array go back to 0 when reached last item

我有一个数组,里面有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);
}

这将把数组指针重置为第一个元素。