2016-04-15 27 views
1

我有在它6种不同颜色像这样的数组:PHP,并使阵列回到0时到达最后一个项目

$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; 
} 

但是,这似乎给我第一项是第一种颜色,第二项是其他颜色。

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

非常感谢提前!

+2

在条件例如if($ loop_counter == 5)中使用double ==。使用“endwhile”的 – RJParikh

+0

看起来很丑陋......你为什么不用'{}'? – Random

回答

10

太近了!

尝试

if($loop_counter == 5) 

您需要的等价关系,不是等于

此外,如果你去了,如果,你是否应该设置$ loop_counter = -1以后有你的$ loop_counter ++ 。

+0

Wauw我觉得'=='哈哈很愚蠢。如果我们都很好,我已经把我的'$ loop_counter ++'放在我的上面了!谢谢! –

+0

好好!很高兴我能帮上忙! –

2

而不是将最大值硬编码到if语句中,您可以创建一个ArrayIterator,例如,

$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; 
} 
+0

这也可以工作,并且更清洁。但颜色的数量是固定的。不管怎么说,多谢拉! –

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], 
// ... 
1
 $loop_counter++; 
if($loop_counter == 6){ 
       $loop_counter = 0; 
      } 

可以尝试这

1

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

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

这将重置您的数组指针到第一个元素。

相关问题