当到达最后一项时,PHP使数组返回0
我有一个包含6种不同颜色的数组,如下所示:当到达最后一项时,PHP使数组返回0,php,arrays,loops,Php,Arrays,Loops,我有一个包含6种不同颜色的数组,如下所示: $colors = array( 'dd0330', 'e49fca', 'a776a6', 'f7e300', 'f78f1e', 'd12a2f', ); 我有一个循环,我把一些东西存储在一个数组中,我为每个元素添加一种颜色。但是阵列可以有多于6个项目,所以当第六种颜色被送出时,我希望计数器被重置 这就是我尝试过的: $loop_counter = 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;
}
但这似乎给了我的第一个项目的第一种颜色和其他一切的第二个
有人知道我怎么重置计数器吗
非常感谢 太近了
试一试
你需要的是等价关系,而不是相等关系
另外,如果要在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上面了,我们都很好!谢谢这也有效,而且更干净。但是颜色的数量是固定的。无论如何谢谢你!这也有效,而且更干净。但是颜色的数量是固定的。无论如何谢谢你!