<?php
$color = '#' . substr(md5(mt_rand()), 0, 6); // 例:#a3f2e1
原理:mt_rand() 產生隨機整數 → md5() 產生 32 位十六進位字串 → 取前 6 位。
<?php
function randrgb(): string
{
$hex = '0123456789ABCDEF';
$color = '#';
for ($i = 0; $i < 6; $i++) {
$color .= $hex[mt_rand(0, 15)];
}
return $color;
}
<?php
/**
* 產生隨機顏色
* @param string $format 'hex' | 'rgb' | 'rgba' | 'array'
* @param int|null $alpha 0-255(rgba 模式有效)
* @return string|array
*/
function randomColor(string $format = 'hex', ?int $alpha = null)
{
$r = mt_rand(0, 255);
$g = mt_rand(0, 255);
$b = mt_rand(0, 255);
return match ($format) {
'hex' => sprintf('#%02X%02X%02X', $r, $g, $b),
'rgb' => "rgb($r, $g, $b)",
'rgba' => "rgba($r, $g, $b, " . ($alpha ?? mt_rand(0, 255)) / 255 . ")",
'array' => ['r' => $r, 'g' => $g, 'b' => $b, 'a' => $alpha ?? 255],
default => throw new InvalidArgumentException("Unsupported format: $format"),
};
}
// 使用範例
echo randomColor(); // #3F8A2B
echo randomColor('rgb'); // rgb(120, 45, 200)
echo randomColor('rgba', 128); // rgba(30, 180, 90, 0.502)
print_r(randomColor('array')); // Array ( [r] => 100 [g] => 50 [b] => 200 [a] => 255 )
<?php
$datasets = [];
foreach ($categories as $cat) {
$datasets[] = [
'label' => $cat,
'backgroundColor' => randomColor('rgba', 100),
'borderColor' => randomColor('hex'),
'data' => $catData[$cat],
];
}
<?php
$colors = [];
for ($i = 1; $i <= 10; $i++) {
$colors[] = "--color-$i: " . randomColor('hex') . ";";
}
$cssVars = implode("\n", $colors);
// 輸出到