前回,かずの撮った高岡山瑞龍寺の写真がフォトコンテストで優秀賞をもらったことを紹介したが,本来,写真部はこうしろうのはずである。実は,こうしろうの写真もあるところで入選していたのだ。

 11月20,21日と,こうしろうは富山市で開かれた県高校文化祭の手伝いに行っていた。駐車場整理や展示室の番をしていたらしいのだが,もちろん,本人の写真も出展されている。その写真にオレンジの札が付いていたと言う。県の高校文化祭の写真の部で入選したのだ。入選作品は,全国高校総合文化祭というものものしい名前のフェスティバルに出展することになるらしい。その文化祭,来年夏に青森で行われるとのこと。写真を出すだけなのかと思ったら,本人も参加するらしい(「恐山心霊写真撮影ツアーかい」とお定まりの突っ込みを入れた)。

 入選した写真は,こうしろうの妹ほのちゃん(6才)が菜の花畑の畦道を歩く後ろ姿を写した一枚で,背中だけでうれしそうな様子が伝わってくるものだ。
 青森で展示する前に,このサイトで公開していいものかどうかわからないので載せない。

 代わりに,こうしろうがもらったトロフィーの画像を載せてみた。よく見ると,トロフィーの上の人がカメラを縦に構えている。

 大きなカメラをブレないようにガシッと構えている感じだ(しかし,トロフィーってのはありがたいには違いないが,どこに置いておこうか,なんとなく始末に困るものでもある)。
 近頃,コンピュータより写真づいている我が家であるが,こうしろうのPHPの勉強は続く。

 この日は関数の定義から始める。
関数は,

----------------------------------------------------------

function 関数名(引数リスト) {
  処理
}

----------------------------------------------------------
のように記述する。

 PHPの変数には,C言語と同様にローカル変数とグローバル変数があるが,それに加え$_GETや$_POSTなどの暗黙に存在するスーパーグローバル変数がある。ここで一度,「覚えてるか,スーパーグローバル変数?」と突っ込んでみたが,こうしろうの反応は「ああ,うん」とイマイチだった。

 演算子もC言語によく似ていて,$a++のようなインクリメント,デクリメント演算子がある。次の比較演算子は特徴的である。
----------------------------------------------------------

<html>
<head><title>test</title></head>
<body>
<?php
 $a="10";
 $b=10;
 if ($a==$b) {
  print('$aと$bは同じ ==');
 }
  if ($a===$b) {
  print('$aと$bは同じ ===');
 }
?>
</body>
</html>

----------------------------------------------------------
==は等しいか否かを比較する演算子なのだが,$a=”10”と代入した文字列の10と$b=10の数値の10がPHPでは等しいと判断される。

 値だけでなく,型まで一致するかを比較するには===演算子を使う。

 論理演算子や代入演算子をサッーと進めて,a +=5;とこれまたC言語同様にa = a + 5を表現できることや文字列は.演算子で結合することを改定新版「基礎PHP」でこうしろうは勉強した。

 次にサンプルプログラムを作って確認したのは,エラー出力をコントロールする@演算子である。
----------------------------------------------------------

<html>
<head><title>test</title></head>
<body>
<?php
  $a="10";
  $b=0;
  print($a/$b);
?>
</body>
</html>

----------------------------------------------------------
 コンピュータはご存知の通り,ある数を0で割ることはできないので,print($a/$b)を実行するとエラーになり,

のように表示される。  @を付け,@print($a/$b)とすると,このメッセージが表示されなくなる。利用者に生のエラーメッセージを見せたくないときに役立つ。

 次に「これも良く使うぞ」とこうしろうに説明したのはdie関数だ。
----------------------------------------------------------

<html>
<head><title>test</title></head>
<body>
<?php
  $file=@fopen("no_exist_file.txt","r")
    or die("ファイルが存在しない");
  print("この行は実行されない");
?>
</body>
</html>

----------------------------------------------------------
die関数はor dieの前に記述した処理が正常に実行されなかったとき,引数として渡された文字列を出力し,スクリプトを中断する。

 読み取り用(r)で開くno_exist_file.txtは存在していないので,「ファイルが存在しない」と表示されスクリプトは終了する。