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 ループ配列内で、配列の最初の色を呼び出し、次に 2 番目と 3 番目などを呼び出します。 foreach が吐き出します。そして、配列の最後の色に達したら、色配列の先頭で繰り返します。

次のようなものを追い出します:

(color1) msg - count
(color2) msg - count
(color3) msg - count
etc..

重複した質問がある場合はお知らせください。調査してみました。

4

3 に答える 3

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 に答える
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 に答える
1

ここで説明されているようにモジュロを使用します: https://stackoverflow.com/a/7237074/496735

あなたの場合を除いて、 %2 の代わりに %3 を実行してください

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

于 2012-05-09T16:16:08.140 に答える