1000 から 9999 までの数字があります。数字ごとに RGB で一意の色を取得する関数が必要です。メソッドが起動されるたびに、各番号の色を同じにする必要があります。また、数字を追加するときは、色を大きく変える必要があります。したがって、1 番は濃い赤、2 番は薄緑などになります。
うまくいけば、誰かがこれを行う方法を知っています! :)
これは私がこれまでに得たものですが、色はほとんど同じです。それは私が望んでいるものではありません!
for ($i = 1000; $i < 2099; $i++) {
$rgb = getRGB(dechex($i));
echo '<div style="width: 800px; height: 30px; margin-bottom: 10px; background-color: ' . rgb2html($rgb['red'], $rgb['green'], $rgb['blue']) . ';"></div>';
}
function getRGB($psHexColorString) {
$aColors = array();
if ($psHexColorString{0} == '#') {
$psHexColorString = substr($psHexColorString, 1);
}
$aColors['red'] = @hexdec($psHexColorString{0} . $psHexColorString{1});
$aColors['green'] = @hexdec($psHexColorString{2} . $psHexColorString{3});
$aColors['blue'] = @hexdec($psHexColorString{4} . $psHexColorString{5});
return $aColors;
}
function rgb2html($r, $g = -1, $b = -1) {
if (is_array($r) && sizeof($r) == 3)
list($r, $g, $b) = $r;
$r = intval($r);
$g = intval($g);
$b = intval($b);
$r = dechex($r < 0 ? 0 : ($r > 255 ? 255 : $r));
$g = dechex($g < 0 ? 0 : ($g > 255 ? 255 : $g));
$b = dechex($b < 0 ? 0 : ($b > 255 ? 255 : $b));
$color = (strlen($r) < 2 ? '0' : '') . $r;
$color .= (strlen($g) < 2 ? '0' : '') . $g;
$color .= (strlen($b) < 2 ? '0' : '') . $b;
return '#' . $color;
}