将颜色数组插入foreach循环中

时间:2012-05-09 16:12:24

标签: php arrays loops foreach array-push

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

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

3 个答案:

答案 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