$legend = array();
$color[] = ('000000', 'ff0000', 'fasd3f');
foreach ($stats as $row) {
if ($row->countofmsg > 0) {
array_push($legend, "<div class='legend_label'><div class='color-block' style='background:#".$color.";'></div>".ucwords($row->msg)."<div class='legend_count'>$row->count</div></div><div class='clear'></div>");
}
}
这是我的代码,我想要做的是设置一个颜色数组$ color [],然后在foreach循环数组中,调用数组中的第一个颜色,然后调用第二个和第三个,依此类推每一件东西都是foreach吐出来的。然后在颜色数组的开头重复到达数组中的最后一种颜色。
会踢出类似的东西:
(color1) msg - count
(color2) msg - count
(color3) msg - count
etc..
如果有重复的问题,请告诉我,我尝试研究它。
答案 0 :(得分:2)
$legend = array();
$color[] = ('000000', 'ff0000', 'fasd3f');
$colorSize = count($color);
foreach ($stats as $row) {
if ($row->countofmsg > 0) {
array_push($legend, "<div class='legend_label'><div class='color-block' style='background:#".$color[(3 % $colorSize)].";'></div>".ucwords($row->msg)."<div class='legend_count'>$row->count</div></div><div class='clear'></div>");
}
}
@watcher建议编辑,但我知道之前发布了正确的答案。
答案 1 :(得分:2)
这假设您的$stats
数组是整数索引
$legend = array();
$color[] = ('000000', 'ff0000', 'fasd3f');
$colorCount = count($color);
foreach ($stats as $k => $row) {
if ($row->countofmsg > 0) {
$legend[] = "<div class='legend_label'><div class='color-block' style='background:#".$color[ ($k % $colorCount) ].";'></div>".ucwords($row->msg)."<div class='legend_count'>$row->count</div></div><div class='clear'></div>";
}
}
答案 2 :(得分:1)
使用模数,如下所述: https://stackoverflow.com/a/7237074/496735
除了你的情况外,做%3而不是%2
$color = $colors[$i % 3]; // where $i is the current row