<?php

function gradient($start$end$steps=16) {

    if( (
strlen($start) != 6) || (strlen($end) != 6) ) {
        return 
false;
    }

    
$s[0] = hexdec(substr($start02));
    
$s[1] = hexdec(substr($start22));
    
$s[2] = hexdec(substr($start42));

    
$e[0] = hexdec(substr($end02));
    
$e[1] = hexdec(substr($end22));
    
$e[2] = hexdec(substr($end42));

    
$diff[0] = $s[0] > $e[0] ? ($s[0]-$e[0])/($steps-1) : ($e[0]-$s[0])/($steps-1);
    
$diff[1] = $s[1] > $e[1] ? ($s[1]-$e[1])/($steps-1) : ($e[1]-$s[1])/($steps-1);
    
$diff[2] = $s[2] > $e[2] ? ($s[2]-$e[2])/($steps-1) : ($e[2]-$s[2])/($steps-1);

    
$r[0] = $s[0];
    
$g[0] = $s[1];
    
$b[0] = $s[2];

    for(
$i=1$i<=$steps-1$i++) {

        
$r[$i] = $s[0] > $e[0] ? $s[0] -= $diff[0] : $s[0] += $diff[0];
        
$r[$i] = round($r[$i]);

        
$g[$i] = $s[1] > $e[1] ? $s[1] -= $diff[1] : $s[1] += $diff[1];
        
$g[$i] = round($g[$i]);

        
$b[$i] = $s[2] > $e[2] ? $s[2] -= $diff[2] : $s[2] += $diff[2];
        
$b[$i] = round($b[$i]);

    }

    
$r[$steps] = $e[0];
    
$g[$steps] = $e[1];
    
$b[$steps] = $e[2];

    
$count count($r);

    for(
$i=0$i<$count$i++) {
        
$color[$i] = str_pad(dechex($r[$i]), 2'0'STR_PAD_LEFT) . str_pad(dechex($g[$i]), 2'0'STR_PAD_LEFT) . str_pad(dechex($b[$i]), 2'0'STR_PAD_LEFT);
    }

    return 
$color;

}
?>