我正在为日历事件生成颜色列表,但我不希望每次刷新日历时颜色都会更改。所以我想知道是否有办法每次都以相同的顺序生成颜色。
现在我正在使用这样的东西:
function random_color()
{
return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
}
答案 0 :(得分:0)
您可以每次使用相同的种子初始化PRNG。这样,随机数序列将始终相同。 看看http://www.php.net/manual/en/function.mt-srand.php
答案 1 :(得分:0)
所以,您可以做的是定义颜色并将它们存储在会话数组中......
尝试例如:
$_SESSION['events_colors'][123] = array('color'=>random_color());
123将被您的事件ID替换,这样当您需要重新加载数据并显示可以访问该存储颜色的颜色时
$_SESSION['events_colors'][123]['color']
$_SESSION['events_colors'][124]['color']
$_SESSION['events_colors'][125]['color']
$_SESSION['events_colors'][etc]['color']
希望这会有所帮助。
答案 2 :(得分:0)
您可以使用mt_srand()
为随机数生成器播种:
function random_color()
{
return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
}
mts_rand(9000);
var_dump(
random_color(),
random_color(),
random_color()
);
有关示例,请参阅:
供参考,见:
或者,您可以使用fzaninotto/faker
生成随机颜色。该库也可以为Faker\Generator
播种,请参阅Seeding the Generator:
您可能希望始终获得相同的生成数据 - 例如,在使用Faker进行单元测试时。生成器提供
seed()
方法,该方法为随机数生成器提供种子。使用相同的种子调用相同的脚本两次会产生相同的结果。
use Faker\Factory;
$faker = Factory::create();
$faker->seed(9000);
var_dump(
$faker->hexColor,
$faker->hexColor,
$faker->hexColor
);
供参考,见: