PHP按年龄和颜色排序编码结果?

时间:2010-01-05 05:42:58

标签: php sorting

我有一个程序,每次运行时都会从数据库中提供一个随机选择。我想要做的是按活动级别排序选择,然后以一种颜色显示选择标题,表示随机选择的活跃程度。

例如:第1项为45天,第2项为61天,第3项为10天。

时间范围为:1-45天(黑色),46-60天(紫色)和超过61天(蓝色)

我希望PHP对项目进行排序,当程序运行时,我希望选择的随机项目采用颜色编码,以便: 如果选择了第3项,则项目标题的文本将为彩色:#000000 如果选择了第1项,则项目标题的文本将为彩色:#770077 如果选择了第2项,则项目标题的文本将为彩色:#0000ff

现有的PHP程序没有任何处理项目年龄或着色项目标题的变量。我几乎是PHP的新手(刚买了Larry Ullman关于这个主题的书),所以我甚至都不知道是否可以这样做,但我想我会问,看看......

2 个答案:

答案 0 :(得分: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;

这不是最快的解决方案,但只需很少的修改即可处理任意数量的案例。

答案 1 :(得分: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项应根据您的要求为黑色。