저는 정의되지 않은 수의 16진수 랜덤 컬러 코드를 생성해야 하는 프로젝트를 진행하고 있습니다. PHP에 이러한 기능을 구축하는 방법은 무엇입니까?
질문에 대한 답변
RGB의 16진수 문자열은 0x0 ~0xFFFF의 숫자이므로 해당 범위의 숫자를 생성하고 16진수로 변환하기만 하면 됩니다.
function rand_color() {
return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); }
또는 다음과 같이 입력합니다.
function rand_color() {
return sprintf('#%06X', mt_rand(0, 0xFFFFFF)); }
0 ~ 255의 난수를 얻은 후 16진수로 변환합니다.
function random_color_part() {
return str_pad( dechex( mt_rand( 0, 255 ) ), 2, '0', STR_PAD_LEFT); }
function random_color() {
return random_color_part() . random_color_part() . random_color_part(); }
echo random_color();
md5는 그 목적에 사용할 수 있습니다.매우 짧습니다.
$color = substr(md5(rand()), 0, 6);
$rand = str_pad(dechex(rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT); echo('#' . $rand);
변경할 수 있습니다.rand()
할 준비가 되어.mt_rand()
당신이 원한다면, 그리고 당신은 넣을 수 있습니다.strtoupper()
에워싸여str_pad()
(필수는 아니지만) 랜덤한 숫자가 더 보기 좋게 보이도록 하기 위해.
이 방법은 완벽하게 동작하며 여기에 설명된 다른 모든 방법보다 훨씬 단순합니다.
유효한 16진수 색상은 0~9와 A~F를 포함할 수 있습니다.따라서 해당 문자로 문자열을 작성한 후 셔플하면 처음 6자를 가져와 랜덤 16진수 색 코드를 생성할 수 있습니다.다음은 예시입니다!
코드
echo '#' . substr(str_shuffle('ABCDEF0123456789'), 0, 6);
잠시 후 루프 테스트를 통해 10,000개의 독특한 색상을 생성했습니다.
10,000개의 고유 색상을 생성하는 데 사용한 코드:
$colors = array(); while (true) {
$color
= substr(str_shuffle('ABCDEF0123456789'), 0, 6);
$colors[$color] = '#' . $color;
if ( count($colors) == 10000 ) {
echo implode(PHP_EOL, $colors);
break;
} }
그 결과 이렇게 랜덤하게 색을 입게 되었습니다.
첫 번째 예에서는 ‘4488CC’와 같은 16진수를 생성할 수 없다고 해서 16진수를 생성할 수 있는 함수를 만들었습니다.
코드
function randomHex() {
$chars = 'ABCDEF0123456789';
$color = '#';
for ( $i = 0; $i < 6; $i++ ) {
$color .= $chars[rand(0, strlen($chars) - 1)];
}
return $color; }
echo randomHex();
두 번째 예는 첫 번째 예보다 훨씬 다른 결과를 반환할 수 있기 때문에 사용하는 것이 좋습니다.그러나 많은 컬러 코드를 생성하지 않을 경우 첫 번째 예제는 정상적으로 작동합니다.