PHPでカラーチャートを表示する

(1/1)
Webページでは、指定した色を表示できない環境があったり、同じ色でもディスプレイに濃さが異なることがある。
Webのカラー表示は #RRGGBB という6桁の16進数で表される。RGB各々を6段階――00, 33, 66, 99, CC, FF――に分割し、6×6×6=計216色の組み合わせを Webセーフカラー と呼んでいる。Webセーフカラーは表示環境に左右されることが少ない。
今回は、Webセーフカラーをカラーチャートとして表示するプログラムをつくってみる。

(2020年12月5日)PHP8での動作確認。

サンプル・プログラムの実行例

PHPでカラーチャートを表示する

サンプル・プログラム

まずはPHPのソースプログラムをダウンロードしてほしい。
解凍できたら、isleap.php というファイル名でWebサーバ Apache の仮想ディレクトリが通っているディレクトリにセーブすること。
例によって、画面に表示している行番号は説明の便宜上のものであり、ソースプログラムには含まれていない。

サンプル・プログラムの実行方法

ブラウザから http://localhost/***/webcolor.php (*** はセーブした仮想ディレクトリ名)と入力すると、カラーチャートを表示する。

配列

このプログラムもHTMLとPHPが混在している。セーフカラーの00, 33, 66, 99, CC, FFの6つ組の数字は、このような一覧表にしておきたい。
番号
000
133
266
399
4CC
5FF
このような表を変数として扱うことができるのが配列である。PHPの配列は他のプログラミング言語の配列と同じ使い方ができる。

ここでは配列 $col を用意する。$変数名[添え字]のようにして使う。
配列に、あらかじめ上表のような値を代入したい場合は、関数  array  を使う。

0019: $col = array('00', '33', '66', '99', 'CC', 'FF');  //配列変数

for文

0021: for ($r = 0; $r <= 5; $r++) {                        //Red
0022:     for ($g = 0; $g <= 5; $g++) {                    //Green
0023:         printf("<tr>\n");
0024:         for ($b = 0; $b <= 5; $b++) {                //Blue
0025:             $code = $col[$r] . $col[$g] . $col[$b];
0026:             printf("<td style=\"text-align:center; background-color:#%s;\">%s</td>\n", $code$code);
0027:         }
0028:         printf("</tr>\n");
0029:     }
0030: }

カラーチャートは、HTMLタグの table を使って一定のパターンで並べることにする。このようなケースでは、繰り返しを行う for文を使うことが多い。前にも少し触れたが、for文は for (式1; 式2; 式3) 文 のようにして使い、最初の式 式1 は、ループ開始時に無条件に実行される。

繰り返しの開始時に、 式2 が評価(実行)される。 その式の値が TRUE が場合、ループは継続され、括弧内の が実行される。値が FALSE の場合、ループの実行は終了する。
各繰り返しの後、 式3 が評価(実行)される。
各式は、空とすることができる。 式2 を空にすることは、無限実行ループを意味する。ここでは、変数$r, $g, $b各々を0から5まで変化させて、それに対応する配列 $col の値からカラーコードを発生させ、セルの背景色としている。

おまけとして、カラーコードを文字として画面に表示させる。

参考サイト

(この項おわり)
header