最初、<td>のbgcolorの値に、”#F00”といった三桁の省略形で書いていたので、黒い背景になってしまい、しばし悩みました。6桁でちゃんと書かないといけないのですね。(ですので、画像にある3ケタ表示は簡略表示しているだけですのであしからず。)
なんか、簡単なプログラムでとても美しいものになったので、ちょっと嬉しくなって投稿してみました。
初心者なコードで笑われるかもしれませんが、一応コードもアップしておきます。
自己ログも兼ねまして。。
<?php function deg2sixteen($deg){//10~15までをa~fに変換 switch($deg){ case 10:$deg="a";break; case 11:$deg="b";break; case 12:$deg="c";break; case 13:$deg="d";break; case 14:$deg="e";break; case 15:$deg="f";break; }//i switch end return $deg; } for($n=0;$n<3;$n++){//RGBそれぞれに色ずつのテーブルをつくるループ switch($n){ case 0:echo"赤Rと緑Gの混色図";break; case 1:echo"緑Gと青Bの混色図";break; case 2:echo"赤Rと青Bの混色図";break; } echo "<table border='0' cellspacing='0'>"; echo "<tr>"; for($i=0;$i<16;$i++){//第一のカラーを0~15まで推移させる。 $ic=$i; $ic=deg2sixteen($ic); echo"<tr>"; for($j=0;$j<16;$j++){//第二のカラーを0~15まで推移させる。 $jc=$j; $jc=deg2sixteen($jc); $ic2=$ic.$ic;$jc2=$jc.$jc;$zero="00";//ここで二ケタに変換 switch($n){//ここでRGBから二色を選ぶ振り分け。 case 0:echo"<td bgcolor='#".$ic2.$jc2.$zero."'>#".$ic.$jc."0</td>";break; case 1:echo"<td bgcolor='#".$zero.$ic2.$jc2."'>#0".$ic.$jc."</td>";break; case 2:echo"<td bgcolor='#".$ic2.$zero.$jc2."'>#".$ic."0".$jc."</td>";break; }//$n switch end }//j for end echo"</tr>"; }//i for end echo"</table><br>"; }//for n end ?>
■追記:deg2sixteen()という自前の関数を作って、
10~15までの数字をa~fまでの英字に返還させるようにしたのですが、
Fatal error: Can't redeclare already declared function
のエラーが最初出て困りました。
要するに関数を複数回宣言している、ということなので考えてみたら、
for文の中で宣言していました。。(^^;
for文の外で宣言してやると、無事いけました。
ああ、初心者(笑)
0 件のコメント:
コメントを投稿