半地下備忘録

たつさんの日記的ななにか。

PHPでおみくじプログラムを作ってみた

この前は復習ということで、PHPで出欠確認用フォームのようなものを作った。まぁあれはあれで直したり、もっと良くしたりしたいんだけど、いったん置いておいて、今回はどこのサイトでもよく見かけるおみくじのプログラムをPHPで作ってみた。

まぁなんでおみくじのプログラムがいいかっていうのは、多分配列と条件文を使うあたりがちょうどいいんじゃないかなと。題材はまぁなんでもよくて、じゃんけんとかでもいいんじゃないかな。

ちなみに前回は見た目もこのブログに似せるやる気があったけど、今回はめんどうなので省略。こだわるなら作るべきだとは思うけど、ソースの見やすさを優先した(という言い訳。面倒だっただけですごめんなさい)。

PHPでおみくじプログラム動作画面

f:id:tatsu-n:20150303132014p:plain
作ったページ:おみくじ

PHPでおみくじプログラムのソース

<?php

$omikuji = array('小吉', '大吉', '', '末吉');
$result = $omikuji[mt_rand(0, count($omikuji)-1)];
?>

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	<title>おみくじ</title>
</head>
<body>
	<h1>おみくじ</h1>
	<p>今日の運勢は「<?php echo $result; ?>」です!</p>
	<p><a href="<?php echo $_SERVER["SCRIPT_NAME"]; ?>">おみくじをもう一度引く</a></p>
</body>
</html>

解説

$omikuji配列におみくじの結果が入っていて、count($omikuji)-1としているので、後から$omikuji配列の要素を増減させたり、変更してもその他の部分には影響がないようになっていたりする。修正したりすることもあるだろうし、できるだけ柔軟に対応できるようにするのって大事そう。

mt_rand関数は引数に最小値と最大値を与えるとその間でランダムな整数を生成してくれる関数で、rand関数というものもあるけど、mt_randのほうが高速だとかどうとか*1

あと、ファイル自身のパスを書く場合は$_SERVER["SCRIPT_NAME"]ってのを使うと、あとからファイル名を変更しても、修正しなくていいのでスマートっぽい。

この前のやつはこちらProgateの復習を兼ねてPHPでフォームのサンプルを作ってみました(コード付き) - 半地下備忘録