2010-01-05 69 views
0

我有一個程序,每次運行時都會從數據庫中提取一個隨機選擇。我想要做的是將選擇按活動級別排序,然後用顏色顯示選擇標題,該顏色表示隨機選擇的活動程度。按年齡和顏色編碼結果的PHP排序?

例如:項目1 45日齡,項目2 61日齡和項目3 10天了。

的時間範圍爲:1-45days(黑色),46-60days(紫色)和超過61天(藍色)

我想PHP對項目進行排序,並在程序運行時,我會想隨機項目選擇顏色編碼,以便: 如果選擇第3項,則項目標題的文本將爲彩色:#000000 如果選擇項目1,則項目標題的文本將爲彩色:#770077 如果選擇第2項,則項目標題的文本將以彩色顯示:#0000ff

現有PHP程序沒有任何變量處理項目的年齡或colori項目標題。我幾乎是一個PHP新手(剛剛購買了拉里烏爾曼的主題),所以我甚至不知道這是否可以完成,但我想我會問,看看...

+0

任何耐用的東西都需要存儲在數據庫中並從數據庫返回。 – Blair 2010-01-05 05:49:25

回答

0

你可以嘗試下面的方法。請注意,我已經通過假設序列中的下一個數組索引始終大於上一個範圍來減小最小/最大值。

// a mapping of ranges and their associated color 
$range_map = array(
    array('color' => '#000000', 'min' => 1, 'max' => 46), 
    array('color' => '#770077', 'min' => 46, 'max' => 61), 
    array('color' => '#0000ff', 'min' => 61, 'max' => 1000000) 
); 

$output = ''; 
foreach ($items as $item) { 
    $color = ''; 
    foreach ($range_map as $range) { 
     if ($item->days_old >= $range['min'] && $item->days_old < $range['max']) { 
      $color = $range['color']; 
      break; 
     } 
    } 

    if (!empty($color)) { 
     $output .= '<span style="color:' . $color . '">' . $YOUR_OUTPUT_HERE . '</span>'; 
    } else { 
     $output .= $YOUR_OUTPUT_HERE; 
    } 
} 

echo $output; 

這不是最快的解決方案,但它可以通過最小的修改處理任意數量的情況。

0

好的。以下是做到這一點的最簡單的方法:應該是黑色的

$items[0]['title'] = 45; 
$items[0]['daysold'] = 45; 
$items[1]['title'] = 61; 
$items[1]['daysold'] = 45; 
$items[2]['title'] = 10; 
$items[2]['daysold'] = 45; 

$output = ''; 
foreach ($items as $item) { 
    switch ($item['daysold']) { 
     case ($item['daysold'] > 60): 
      $color = "#00FFFF"; 
      break; 
     case ($item['daysold'] > 45): 
      $color = "#AA00FF"; 
      break; 
     default: 
      $color = "#000000"; 
    } 
    $output .= '<span style="color:' . $color . '">' . $item['title'] . '</span>'; 
} 
echo $output; 

第1項,第2項應爲藍色,第3項應根據您的要求是黑色的爲好。