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

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

(2023年1月8日)読みやすいように変数名などを見直した

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

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

サンプル・プログラム

圧縮ファイルの内容
webcolor.phpサンプル・プログラム本体。
webcolor.php 更新履歴
バージョン 更新日 内容
1.2.0 2023/01/08 読みやすいように変数名などを見直した
1.11 2020/12/05 PHP8動作確認
1.1 2014/07/06 HTML5対応
1.0 2004/10/09 初版
まずはPHPのソースプログラムをダウンロードしてほしい。
解凍できたら、isleap.php というファイル名でWebサーバ Apache の仮想ディレクトリが通っているディレクトリにセーブすること。
例によって、画面に表示している行番号は説明の便宜上のものであり、ソースプログラムには含まれていない。

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

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

配列

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

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

  20: //R・G・B各々の値を格納した配列
  21: $colors = array('00', '33', '66', '99', 'CC', 'FF');

for文

  23: //カラーチャートを生成する
  24: for ($red = 0$red < count($colors); $red++) {
  25:     for ($green = 0$green < count($colors); $green++) {
  26:         printf("<tr>\n");
  27:         for ($blue = 0$blue < count($colors); $blue++) {
  28:             $code = $colors[$red. $colors[$green. $colors[$blue];
  29:             printf("<td style=\"text-align:center; background-color:#%s;\">%s</td>\n", $code, $code);
  30:         }
  31:         printf("</tr>\n");
  32:     }
  33: }

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

繰り返しの開始時に、 式2 が評価(実行)される。 その式の値が TRUE が場合、ループは継続され、括弧内の が実行される。値が FALSE の場合、ループの実行は終了する。

各繰り返しの後、 式3 が評価(実行)される。ここでは組み込み関数  count  を使い、あらかじめ用意した配列の要素数 - 1 を上限としてループを回す。
各式は、空とすることができる。 式2 を空にすることは、無限実行ループを意味する。ここでは、変数$r, $g, $b各々を0から5まで変化させて、それに対応する配列 $col の値からカラーコードを発生させ、セルの背景色としている。

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

参考サイト

(この項おわり)
header