Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当到达最后一项时,PHP使数组返回0_Php_Arrays_Loops - Fatal编程技术网

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

当到达最后一项时,PHP使数组返回0,php,arrays,loops,Php,Arrays,Loops,我有一个包含6种不同颜色的数组,如下所示: $colors = array( 'dd0330', 'e49fca', 'a776a6', 'f7e300', 'f78f1e', 'd12a2f', ); 我有一个循环,我把一些东西存储在一个数组中,我为每个元素添加一种颜色。但是阵列可以有多于6个项目,所以当第六种颜色被送出时,我希望计数器被重置 这就是我尝试过的: $loop_counter = 0

我有一个包含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\u计数器+,则if应该将$loop\u计数器设置为-1。

如此接近

试一试

你需要的是等价关系,而不是相等关系


此外,如果要将$loop_计数器++放在if之后,if应将$loop_计数器设置为-1。

而不是将最大值硬编码到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; 
}

您可以创建一个
ArrayIterator
,而不是将max值硬编码到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; 
}
你可以做得更好

$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],
// ...
你可以做得更好

$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],
// ...
我可以试试这个

可以试试这个

PHP数组函数就是专门用于此目的的

if ($loop_counter == 6) {
 reset($colors);
}
这将重置指向第一个元素的数组指针。

PHP数组函数专用于此目的

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

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

在条件中使用double==例如:if($loop\u counter==5)。使用“endwhile;”看起来很难看。。。为什么不使用
{}
?在条件中使用double==例如:if($loop\u counter==5)。使用“endwhile;”看起来很难看。。。你为什么不使用
{}
?哇,我觉得
==
很愚蠢,哈哈。我已经把我的
$loop\u计数器+
放在我的if-so上面了,我们都很好!谢谢哇,我觉得自己太傻了,
==
哈哈。我已经把我的
$loop\u计数器+
放在我的if-so上面了,我们都很好!谢谢这也有效,而且更干净。但是颜色的数量是固定的。无论如何谢谢你!这也有效,而且更干净。但是颜色的数量是固定的。无论如何谢谢你!