2010-01-05 1 views
0

У меня есть программа, которая представляет каждый случайный выбор из базы данных при каждом запуске. Я хотел бы сделать выбор, отсортированный по уровню активности, а затем заголовок выбора, отображаемый в цвете, который представляет, насколько активен случайный выбор.PHP сортировка по возрасту и цвету кодирование результатов?

Например: Пункт 1 45 дней, Пункт 2 составляет 61 дней и Пункт 3 10 дней.

Диапазон времени: 1-45days (черный), 46-60days (фиолетовый) и над 61days (синий)

Я хотел бы PHP для сортировки элементов и при запуске программы я хотел бы случайный элемент, выбранный для цветовой кодировки, так что: Если выбран пункт 3, текст заголовка элементов будет иметь цвет: # 000000 Если выбран пункт 1, текст для названия элементов будет иметь цвет: # 770077 Если выбран пункт 2, текст для названия элементов будет иметь цвет: # 0000ff

Существующая программа PHP не имеет никакой переменной, относящейся к возрасту элемента или с колори Заголовок заголовка. Я почти полный новичок с PHP (только что купил книгу Ларри Ульмана по этому вопросу), поэтому я даже не знаю, можно ли это сделать, но я решил, что спрошу и посмотрю ...

+0

Все, что долговечно, необходимо хранить и возвращать из базы данных. – Blair

ответ

0

Вы можете попробовать следующий метод , Обратите внимание, что я уменьшил min/max, предположив, что следующий индекс массива в последовательности всегда больше предыдущего диапазона.

// 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

ok. Ниже это самый простой способ сделать это:

$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 должен быть черным, а в соответствии с вашими требованиями.

Смежные вопросы