到达最后一项时,PHP make数组返回0

时间:2016-04-15 12:39:39

标签: php arrays loops

我有一个包含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; 
}

但这似乎让我的第一个项目成为第一个颜色,而其他第二个项目则成为第二个颜色。

任何人都知道如何重置我的柜台?

非常感谢提前!

5 个答案:

答案 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)

PHP数组函数reset()专门用于此目的。

if ($loop_counter == 6) {
 reset($colors);
}

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