PHP сортировка по возрасту и цветовой кодировке результатов? - PullRequest
0 голосов
/ 05 января 2010

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 19 мая 2010

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

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

0 голосов
/ 05 января 2010

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

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

Это не самое быстрое решение, но оно может обрабатывать любое количество случаев с минимальными изменениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...