确定,所以我有两个数组-一个用于发布,一个有限的5个值的数组,用于提供每个发布的颜色。我想要的是让帖子循环显示颜色数组,以便每6个位置重新开始。我现在正在做的事情本身只在数量有限的帖子中起作用,但这有点琐,不是很优雅:
$colors = array('yellow', 'red', 'blue', 'green', 'purple');
foreach($posts as $i => $post) {
$color = $colors[$i];
if ($i >= count($colors)) {
$color = $colors[-count($colors) + $i];
if ($i >= (count($colors) * 2)) {
$color = $colors[(-count($colors) * 2) + $i];
}
}
//Do stuff here
}
我确定有更聪明的方法可以做到这一点,我只是不知道如何。
模数5(%5)将进行快速修复
for($i=0;$i<count($posts);$i++){
$color=$colors[$i%5];
# todo here
}
为了使$ posts具有无限nr的功能,每次达到$ iColors $ colors中条目的最大nr时,都必须将索引重置为0。
示例代码:
$html = '';
$colors = array('yellow', 'red', 'blue', 'green', 'purple');
// generate 100 posts for testing
$posts = array();
for ($i = 1; $i <= 100; $i++) {
$posts[] = 'post' . $i;
}
$iColor = 0;
$iColorMaxCount = count($colors) - 1;
foreach ($posts as $index => $post) {
$color = $colors[$iColor];
/**
* increment $iColor + 1
* if $iColor reached max index of array $colors reset to index 0
*/
$iColor = $iColor < $iColorMaxCount ? $iColor + 1 : 0;
//Do stuff here
$html .= '<h1 style="color:' . $color . ';">' . $post . '<h1>' . PHP_EOL;
}
echo $html;