1
$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..

如果有重复的问题,请告诉我,我尝试研究它。

4

3 回答 3

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 建议编辑,但我知道之前已经发布了正确的答案。

于 2012-05-09T16:15:06.893 回答
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>";
    }
}
于 2012-05-09T16:19:53.533 回答
1

按照此处的说明使用模数: https ://stackoverflow.com/a/7237074/496735

除了在你的情况下做 %3 而不是 %2

$color = $colors[$i % 3]; // where $i is the current row

于 2012-05-09T16:16:08.140 回答