2013-04-25 56 views
1

對此可能有一個簡單的答案,但是我只是一直無法解決它。PHP - 基於數組中'分組'值的備用行顏色

我有以下陣列:

Array 
(
    [0] => Array 
     (
      [meeting_grouping] => 1 
      [client_first_name] => Nikolay 
     ) 

    [1] => Array 
     (
      [meeting_grouping] => 1 
      [client_first_name] => Konstantin 
     ) 

    [2] => Array 
     (
      [meeting_grouping] => 1 
      [client_first_name] => Andrey 
     ) 

    [3] => Array 
     (
      [meeting_grouping] => 4 
      [client_first_name] => Eddie 
     ) 

    [4] => Array 
     (
      [meeting_grouping] => 4 
      [client_first_name] => Neil 
     ) 

    [5] => Array 
     (
      [meeting_grouping] => 6 
      [client_first_name] => Ian 
     ) 

    [6] => Array 
     (
      [meeting_grouping] => 6 
      [client_first_name] => Mark 
     ) 
) 

我想這樣做是輸出這個數據到一個HTML表,彩色代碼行。我知道如何交替排列顏色,但在這種情況下,我需要根據「meeting_grouping」對其進行顏色編碼。即Nikolay,Konstantin和Andrey(meeting_grouping = 1)會有灰色背景,Eddie和Neil(meeting_grouping = 4)會有白色背景,Ian和Mark(meeting_grouping = 6)會有灰色背景。

如果有人能指出我在正確的方向,將不勝感激。

在此先感謝!當你遍歷您的陣列只echo $colours[$meeting_grouping_var];(其中$meeting_grouping_var是當前meeting_grouping值)

$colours = array(
    1 => 'grey', 
    4 => 'white', 
    6 => 'grey' 
); 

然後:

回答

1

你可以創建一個數組映射meeting_grouping到相應的顏色,例如。

+0

非常感謝您的快速回復。這個想法對我來說已經成功了。我可能沒有說清楚有幾百個分組,但我只是迭代它們並將它們全部添加到將meeting_grouping映射到相應顏色的數組。再次感謝! – Steve 2013-04-25 13:23:21

2

如果您需要爲不同的分組

任意的方式當你把它輸出到HTML表,分配類名與分組數行。那麼你應該在CSS中爲每個組定義樣式,當然是使用默認樣式,以防出現一些新的分組。

例如,表能夠站出來爲:

<table> 
    <tr class="meeting_grouping1"> 
     <td>Konstantin</td> 
    </tr> 
    <tr class="meeting_grouping1"> 
     <td>Andrey</td> 
    </tr> 
    <tr class="meeting_grouping4"> 
     <td>Eddie</td> 
    </tr> 
    <tr class="meeting_grouping4"> 
     <td>Neil</td> 
    </tr> 
    <tr class="meeting_grouping6"> 
     <td>Ivan</td> 
    </tr> 
    <tr class="meeting_grouping6"> 
     <td>Mark</td> 
    </tr> 
</table> 

然後在CSS定義樣式:

tr td 
{ 
    background-color: white; 
} 

tr.metting_grouping1 td 
{ 
    background-color: grey; 
} 

tr.metting_grouping4 td 
{ 
    background-color: white; 
} 

tr.metting_grouping1 td 
{ 
    background-color: grey; 
} 

如果你只需要交替的顏色爲不同的分組

當檢查數組以準備表時,請檢查上一行的meeting_grouping值以查看它是否爲相同。如果不相同,請將樣式切換爲交替樣式。在PHP中,它可能看起來像這樣:

$use_alternate_style = false; 
$previous_grouping = false; 

foreach ($meeting_groupings as $entry) 
{ 
    if ($entry['meeting_grouping'] != $previous_grouping) 
    { 
     // Inverses the alternate style indicator 
     $use_alternate_style = !$use_alternate_style; 
    } 

    // Stores the grouping number for the next cycle 
    $previous_grouping = $entry['meeting_grouping']; 

    // Depending on whether $use_alternate_style is true or not, you 
    // add a class name to the table row and then assign background colors 
    // similarly as in the above HTML/CSS example. 
} 
+0

感謝您花時間回覆我的問題。幸運的是,比洛納坎的想法在我看到你的帖子之前給了我需要的靈感。 – Steve 2013-04-25 13:30:03

+0

但是,我建議不要在代碼中硬編碼顏色名稱,因爲可維護性 - 樣式應該與應用程序邏輯分離並放入CSS中。 – pilsetnieks 2013-04-25 13:57:16